Android结束APP进程以及判断进程是否存在、判断Activity是否在后台

Android结束APP进程以及判断进程是否存在、判断Activity是否在后台

1 androidstudio 的 stop app 是结束 app 下次启动 会从头启动

2 通过 DDMS 结束进程

tools->android device monitor

等十几秒,弹出新对话框,然后左上角可以看到进程名 点击stop即可
模仿的 是 系统杀死进程

3 而 android开发者选项中的 不保持活动选项 则是每个界面都不保存
当activity被强杀时,系统会调用onSaveInstance去让你保存一些变量

判断进程是否存在

public class IsAppProcessExist {

    /**
     *  判断进程是否存活
     */
    public static boolean isProcessExist(Context context, int pid) {

        ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
        List<ActivityManager.RunningAppProcessInfo> lists ;
        if (am != null) {
            lists = am.getRunningAppProcesses();
            for (ActivityManager.RunningAppProcessInfo appProcess : lists) {
                if (appProcess.pid == pid) {
                    Log.e("TAG","333333");
                    return true;
                }
            }
        }
        return false;
    }
}

调用:

IsAppProcessExist.isProcessExist(context,android.os.Process.myPid());

但是注意的是,不能用于判断自身是否被杀死然后执行相关操作 因为 你能去执行这个代码 说明你的进程就没有被杀死

结束APP进程:
一般用户直接通过菜单键杀掉应用,所以可以结束掉
而要自己点击返回键退出或其他逻辑直接结束干净APP:
1 finish掉 其他资源要释放干净(子进程、线程都要清干净) 还是不一定能完全退出
2 android.os.Process.killProcess(android.os.Process.myPid())
3 执行 shell命令 am force-stop
4 System.exit(0) 退出虚拟机


注意:app被杀死后, 变量 包括static的变量 以及application的实例 都会结束
并且 会回到上一个 结束的界面 并重新 oncreate 若继承了 baseActivity 则 baseActivity也会oncreate
而不是重新启动APP走重启流程


判断Activity是否在后台

参考项目的ActivityStack 用一个弱引用的Stack存着Started过的Activity即sStartedActivities,通过sAppBackGround标志位判断
在onActivityStarted会add进去 在onActivityStopped会remove出去
若if (!sAppBackGround && sStartedActivities.isEmpty()) 则sAppBackGround=true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值