关于Activity的管理类
2017-08-03 15:34
169 查看
下面介绍一下关于app开发的activity管理类
在开发一款App时,Activity统一管理类是非常有必要的。包括将activity添加到栈中,结束activity等。现在介绍一个统一写法public class AppManager { private Stack<Activity> activityStack; private static AppManager instance; private AppManager(){} /** * 单一实例 * @return */ public static AppManager getAppManager(){ if(instance==null){ synchronized (AppManager.class) { 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 void finishActivity(){ Activity activity=activityStack.lastElement(); if(activity!=null){ activity.finish(); activity=null; } } /** * 结束指定的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); } catch (Exception e) { } } }
代码中还添加了退出所有activity即退出整个应用的写法。
该如何使用他呢。
众所周知,我们在开发一个应用的时候,都会写一个base类,让我们之后用到的所有Activity都来继承他,因此我们只需要在baseActivity中来调用就可以了。
public class BaseActivity extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); AppManager.getAppManager().addActivity(this); } @Override protected void onDestroy() { super.onDestroy(); AppManager.getAppManager().finishActivity(this); } }
这样的话,只要我们每写一个activity就来继承BaseActivity。
那base类中关于退出应用的方式如何实现呢。其实很见到,只要我们在点退出应用时直接调用即可,即:
AppExit(this)
很简单,希望对大家有用!
相关文章推荐
- 关于Activity的启动模式,你知道吗?
- 关于fragment丢失Activity
- 关于继承parent="Theme.AppCompat"错误:This Activity already has an action bar supplied by the window decor
- Activity管理类
- 关于finish()调用后Activity的生命周期问题
- 关于startactivity初始化activity的过程以及activity和window以及view的关系
- Android学习心得--关于BaseActivity
- 【乐视云学习笔记】关于Letv乐视云点播的视频暂停之后,按home回到桌面后重新onResume回到Activity,视频自动播放的情况
- Android关于Activity切换效果的实现加强
- 【转】关于Activity和Task的设计思路和方法
- 关于startActivityForResult
- Android 中关于activity引起的内存溢出
- 关于Activity的生命周期的一些见解
- 关于startActivityForResult()方法后Activity直接退出的问题原因和解决办法
- 关于android:parentActivityName 探索
- 关于Activity的按键事件监听的坑
- 关于在 Service 或 BroadcastReceiver 中 startActivity 的问题
- 开源中国客户端Activity管理类(可直接用到项目中)
- 关于onActivityResult方法不执行的问题汇总
- 关于在非activity类里面调用startActivty和startActivityForResult