OSChina客户端源码学习-程序完全退出功能实现

程序通过自定义一个AppManager管理类实现程序完全退出的功能。


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()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值