• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

cynchanpin

  • 博客园
  • 联系
  • 订阅
  • 管理

View Post

在对Activity基类的封装中,我做了什么

在开发实践中,不同Activity有很多代码是反复冗余的。因此非常有必要将这部分抽取出来。封装一个继承自Activity的类,命名为BaseActivity。
翻看之前写过的代码,起初,BaseActivity只用来做了一个友盟统计,每一个Activity的onPause与onResume方法进行了重写,基于此记录了页面使用的相关数据。代码例如以下:

public class BaseActivity extends Activity {

	protected String Tag;
	protected Context mContext;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		Tag = this.getClass().getSimpleName();
		mContext = this;
	}

	@Override
	protected void onResume() {
		super.onResume();
		MobclickAgent.onResume(this);
	}
	
	@Override
	protected void onPause() {
		super.onPause();
		MobclickAgent.onPause(this);
	}
}
接下来发现,除了这个,还有非常多工作能够放在BaseActivity中来做,节省大量的人力物力。

当中,Toast是很很常见的一个简单提示控件。在学习后,最初是这样使用的:

//须要进行显示一个Toast
Toast.makeText(this, "Hello", Toast.LENGTH_SHORT).show();
后来发现每次写太麻烦。不如将其封装为一个工具类其中。其中借鉴各位大神的封装模式:

public class T
{

	private T()
	{
		/* cannot be instantiated */
		throw new UnsupportedOperationException("cannot be instantiated");
	}

	public static boolean isShow = true;

	public static void showShort(Context context, CharSequence message)
	{
		if (isShow)
			Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
	}

	public static void showShort(Context context, int message)
	{
		if (isShow)
			Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
	}

	public static void showLong(Context context, CharSequence message)
	{
		if (isShow)
			Toast.makeText(context, message, Toast.LENGTH_LONG).show();
	}

	public static void showLong(Context context, int message)
	{
		if (isShow)
			Toast.makeText(context, message, Toast.LENGTH_LONG).show();
	}
	
}
每次使用时,能够少些一个參数,显示的时间略。

一段时间过后。将这个显示Toast方法封装在Activity中,是否会更加优雅,于是乎:

public class BaseActivity extends Activity {

      //...add new method
      protected void showShortToast(String msg) {
        Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
    }

}

在继承BaseActivity后,每次显示Toast岂不是非常方便?

举一反一,其它经常使用UI控件相同能够进行封装。



在有的项目中,使用了像UIL第三方的图片载入库。相同能够进行封装,也在一定程度降低了非常多代码量,例如以下图:

public class ImageLoaderBaseActivity extends BaseActivity {
	
	protected DisplayImageOptions options;
	protected ImageLoader imageLoader;

	protected void onCreate(Bundle savedInstanceState) {
		options = new DisplayImageOptions.Builder()
				.showImageOnLoading(R.drawable.bg_pic_loading)
				.showImageForEmptyUri(R.drawable.ic_launcher)
				.showImageOnFail(R.drawable.ic_launcher).cacheInMemory(true)
				.cacheOnDisc(true).considerExifParams(false)
				.imageScaleType(ImageScaleType.EXACTLY_STRETCHED)
				.bitmapConfig(Bitmap.Config.RGB_565)
				.resetViewBeforeLoading(false)// 设置图片在下载前是否重置,复位
				.build();// 构建完毕
		imageLoader = ImageLoader.getInstance();
		imageLoader.init(ImageLoaderConfiguration.createDefault(this));

	};
}

事实上,隐藏ActionBar也可放在BaseActivity里面。

除此,还有好多。希望能起到抛砖引玉的作用,大家一起来讨论!

博主新人,还请各位大神轻拍。




posted on 2017-06-10 09:01  cynchanpin  阅读(840)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3