zoukankan      html  css  js  c++  java
  • 在对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里面。

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

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




  • 相关阅读:
    js语法中一些容易被忽略,但会造成严重后果的细节
    第三方技术方案大集合,收集一些好用、有意思的方法、网站
    jQuery的Promise 这里介绍的很详细
    获取当月|目标月最后一天
    bootstrap ui样例
    正则校验数字格式,并只能保留两个小数
    新建指定长度的数组,填入内容,内容都为固定值
    mobx 学习笔记
    (二)Android 基本控件
    (一)初识Android
  • 原文地址:https://www.cnblogs.com/cynchanpin/p/6977815.html
Copyright © 2011-2022 走看看