程序通过自定义一个AppManager管理类实现程序完全退出的功能。
AppManager类图
AppManager成员函数分析
getAppManager-获取instance实例
AppManager采用单例模式获取实例instance:AppManager.getAppManager()
public static AppManager getAppManager() {
if (instance == null) {
instance = new AppManager();
}
return instance;
}
addActivity-在stack中添加acticity
通过activityStack存储程序中所有的activity,每次新建activity时,均执行AppManager.getAppManager().addActivity将该activity存入activityStack中
public void addActivity(Activity activity) {
if (activityStack == null) {
activityStack = new Stack<Activity>();
}
activityStack.add(activity);
}
AppExit-退出程序
当需要退出程序时,调用AppExit:AppManager.getAppManager().AppExit():
public void AppExit(Context context) {
try {
finishAllActivity();
// 杀死该应用进程
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(0);
} catch (Exception e) {
}
}
先调用finishAllActivity,遍历acticityStack中所有activity,执行如下操作:
activityStack.remove(activity);
activity.finish();
stack中的所有activity调用finish完毕后,AppExit执行以下代码退出程序
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(0);
PS:killProcess和System.exit(0)是一个意思,两者执行其中一个即可。
AppManager使用小结
在程序中通过stack完成对acticity的管理,能够较好的执行程序完全退出功能。需要注意的是每个Acticity在onCreate中需要执行AppManager.getAppManager().addActivity(this),将acticity存入stack中。对此可考虑写一个BaseActivity基类,在其onCreate中执行AppManager.getAppManager().addActivity(this),程序中所有Activity继承该基类,在onCreate中调用super.onCreate()