在對Activity基類的封裝中,我做了什麼,activity基類封裝

來源:互聯網
上載者:User

在對Activity基類的封裝中,我做了什麼,activity基類封裝

在開發實踐中,不同Activity有許多代碼是重複冗餘的,因此很有必要將這部分抽取出來,封裝一個繼承自Activity的類,命名為BaseActivity。
翻看之前寫過的代碼,起初,BaseActivity僅僅用來做了一個友盟統計,每個Activity的onPause與onResume方法進行了重寫,基於此記錄了頁面使用的相關資料,代碼如下:

public class BaseActivity extends Activity {protected String Tag;protected Context mContext;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Tag = this.getClass().getSimpleName();mContext = this;}@Overrideprotected void onResume() {super.onResume();MobclickAgent.onResume(this);}@Overrideprotected void onPause() {super.onPause();MobclickAgent.onPause(this);}}
接下來發現,除了這個,還有很多工作可以放在BaseActivity中來做,節省大量的人力物力。

其中,Toast是非常非常常見的一個簡單提示控制項,在學習後,最初是這樣使用的:

//需要進行顯示一個ToastToast.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裡面。

除此,還有好多,希望能起到拋磚引玉的作用,大家一起來討論!

博主新人,還請各位大神輕拍。


著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.