日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android之Activity框架

發布時間:2024/7/23 Android 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android之Activity框架 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在安卓應用中,經常需要Activity中經常需要有大量相似的Activity類,這些類往往有相似的結構與功能,因此產生了大量重復代碼,為此,以下提供一種方法有效的降低了代碼冗余。

定義Activity工具類

* 應用程序Activity管理類:用于Activity管理和應用程序退出* 修訂歷史 :* * ============================================================**/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);}/*** 獲取當前Activity(堆棧中最后一個壓入的)*/public Activity currentActivity(){Activity activity=activityStack.lastElement();return activity;}/*** 結束當前Activity(堆棧中最后一個壓入的)*/public void finishActivity(){Activity activity=activityStack.lastElement();finishActivity(activity);}/*** 結束指定的Activity*/public void finishActivity(Activity activity){if(activity!=null){activityStack.remove(activity);activity.finish();activity=null;}}/*** 結束指定類名的Activity*/public void finishActivity(Class<?> cls){for (Activity activity : activityStack) {if(activity.getClass().equals(cls) ){finishActivity(activity);}}}/*** 結束所有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();}/*** 退出應用程序*/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生命周期回調方法-創建*/@Overridepublic void onCreate(Bundle paramBundle) {super.onCreate(paramBundle);// 設置沒有標題// requestWindowFeature(Window.FEATURE_NO_TITLE);mContext = this;app = (AmbowApplication) getApplication();AppManager.getAppManager().addActivity(this);initView();}/*** Android生命周期回調方法-銷毀*/@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();/*** 后臺獲取數據*/protected abstract void processLogic();/*** 設置監聽*/protected abstract void setListener();

將獲取布局,獲取View,獲取后臺數據,設置監聽設置為抽象方法,使得子類繼承時必須要實現。

子類對抽象方法的實現

@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);}}});

總結

以上是生活随笔為你收集整理的Android之Activity框架的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。