Android之Activity框架
生活随笔
收集整理的這篇文章主要介紹了
Android之Activity框架
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
在安卓應(yīng)用中,經(jīng)常需要Activity中經(jīng)常需要有大量相似的Activity類,這些類往往有相似的結(jié)構(gòu)與功能,因此產(chǎn)生了大量重復(fù)代碼,為此,以下提供一種方法有效的降低了代碼冗余。
定義Activity工具類
* 應(yīng)用程序Activity管理類:用于Activity管理和應(yīng)用程序退出* 修訂歷史 :* * ============================================================**/public class AppManager {private static Stack<Activity> activityStack;private static AppManager instance;private AppManager(){}/*** 單一實例*/public static AppManager getAppManager(){if(instance==null){instance=new AppManager();}return instance;}/*** 添加Activity到堆棧*/public void addActivity(Activity activity){if(activityStack==null){activityStack=new Stack<Activity>();}activityStack.add(activity);}/*** 獲取當(dāng)前Activity(堆棧中最后一個壓入的)*/public Activity currentActivity(){Activity activity=activityStack.lastElement();return activity;}/*** 結(jié)束當(dāng)前Activity(堆棧中最后一個壓入的)*/public void finishActivity(){Activity activity=activityStack.lastElement();finishActivity(activity);}/*** 結(jié)束指定的Activity*/public void finishActivity(Activity activity){if(activity!=null){activityStack.remove(activity);activity.finish();activity=null;}}/*** 結(jié)束指定類名的Activity*/public void finishActivity(Class<?> cls){for (Activity activity : activityStack) {if(activity.getClass().equals(cls) ){finishActivity(activity);}}}/*** 結(jié)束所有Activity*/public void finishAllActivity(){for (int i = 0, size = activityStack.size(); i < size; i++){if (null != activityStack.get(i)){activityStack.get(i).finish();}}activityStack.clear();}/*** 退出應(yīng)用程序*/public void AppExit(Context context) {try {finishAllActivity();ActivityManager activityMgr= (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);activityMgr.restartPackage(context.getPackageName());System.exit(0);android.os.Process.killProcess(android.os.Process.myPid());} catch (Exception e) { }} }定義Activity基類
public abstract class BaseActivity extends Activity implements OnClickListener {/*** Android生命周期回調(diào)方法-創(chuàng)建*/@Overridepublic void onCreate(Bundle paramBundle) {super.onCreate(paramBundle);// 設(shè)置沒有標(biāo)題// requestWindowFeature(Window.FEATURE_NO_TITLE);mContext = this;app = (AmbowApplication) getApplication();AppManager.getAppManager().addActivity(this);initView();}/*** Android生命周期回調(diào)方法-銷毀*/@Overrideprotected void onDestroy() {AppManager.getAppManager().finishActivity(this);super.onDestroy();}@Overrideprotected void onResume() {super.onResume();overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out);}@Overrideprotected void onPause() {super.onPause();}/*** 初始化界面*/private void initView() {loadViewLayout();findViewById();processLogic();setListener();}/*** find控件*/protected abstract void findViewById();/*** 加載布局*/protected abstract void loadViewLayout();/*** 后臺獲取數(shù)據(jù)*/protected abstract void processLogic();/*** 設(shè)置監(jiān)聽*/protected abstract void setListener();將獲取布局,獲取View,獲取后臺數(shù)據(jù),設(shè)置監(jiān)聽設(shè)置為抽象方法,使得子類繼承時必須要實現(xiàn)。
子類對抽象方法的實現(xiàn)
@Overrideprotected void findViewById() {newsLv = (ListView) this.findViewById(R.id.news_lv);gallery = (MyGallery) galleryView.findViewById(R.id.gallery);galleryRl = (RelativeLayout) galleryView.findViewById(R.id.rl_gallery);bannerTv = (TextView) galleryView.findViewById(R.id.banner_tv);addMoreBtn = (TextView) addMoreView.findViewById(R.id.btn_add_more);}@Overrideprotected void loadViewLayout() {setContentView(R.layout.news_list_layout);galleryView = View.inflate(mContext, R.layout.gallery_layout, null);addMoreView = View.inflate(mContext, R.layout.add_more, null);setTitleBarView(false, "資訊", -1, true);}@Overrideprotected void processLogic() {newsLv.addHeaderView(galleryView);eduNewsList = new ArrayList<NewsListEntity.News>();newsLv.addFooterView(addMoreView); // getTopNewsData();}@Overrideprotected void setListener() {addMoreBtn.setOnClickListener(this);newsLv.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {Intent detailIntent = new Intent(mContext,NewsDetailActivity.class);if (eduNewsList.size() > arg2 - 1) {detailIntent.putExtra("id", eduNewsList.get(arg2 - 1).Id);startActivity(detailIntent);}}});總結(jié)
以上是生活随笔為你收集整理的Android之Activity框架的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【每日SQL打卡】
- 下一篇: Deep Image Homograph