利用Android两行代码真正杀死你的App
Android上杀掉进程的方式有两种,分别是System.exit(0)和Process.killProcess(Process.myPid()),这两种方法比较暴力,App进程会被直接杀掉,但是由于Android的安全机制,你会发现,在调用上述两种方法后,App会被自动重启,并未达到我们想要的杀死状态!
那我们该怎样实现真正的杀死App呢?
我认为需要两个步骤:
一、关闭打开的所有Activity
二、调用System.exit(0)或Process.killProcess(Process.myPid())
先介绍两种关闭所有Activity的方法:
1、这第一种方法是郭神在《第一行代码》中讲到的,我在这引用一下。
首先我们需要用一个专门的集合类对所有的活动进行管理,新建一个ActivityCollector类作为活动管理器,代码如下所示:
private static List<Activity> activities = new ArrayList<>(); public static void addActivity(Activity activity) { activities.add(activity); } public static void removeActivity(Activity activity) { activities.remove(activity); } public static void finishAll() { for (Activity activity : activities) { if (!activity.isFinishing()) { activity.finish(); } } activities.clear(); }
在活动管理器中,我们通过一个List来暂存活动,然后提供了addActivity()方法用于向List中添加一个活动,提供了removeActivity()方法用于从List中移除活动,最后提供了finishAll()方法用于将List中存储的活动全部销毁掉。
接下来我们创建一个BaseActivity(这是一个继承至AppCompatActivity的普通java类,不需要在AndroidManifest中注册),之后我们所创建的所有Activity均需要继承至这个BaseActivity,
代码如下所示:
public class BaseActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d("BaseActivity", getClass().getSimpleName()); ActivityCollector.addActivity(this); } @Override protected void onDestroy() { super.onDestroy(); ActivityCollector.removeActivity(this); } }
在BaseActivity的onCreate()方法中调用了ActivityCollector的addActivity()方法,表明将当前正在创建的活动添加到活动管理器里。
然后在BaseActivity中重写onDestroy()方法,并调用了ActivityCollector的removeActivity()方法,表明将一个马上要销毁的活动从活动管理器里移除。
从此以后,不管你想在什么地方退出程序,只需要调用ActivityCollector.finishAll()方法就可以了。
2、这第二种方法相当简单给力!只需要一行代码!
在Activity中:
finishAffinity();
如果在Fragment中:
getActivity().finishAffinity();
OK!现在我们已经将所有Activity关闭了,接下来只需要调用System.exit(0)或Process.killProcess(Process.myPid())中的一种,就可以实现在任意地方,随时随地真正的杀死App了!
以上这篇利用Android两行代码真正杀死你的App就是小编分享给大家的全部内容了,希望能给大家一个参考
您可能感兴趣的文章:
- Android两行代码真正杀死你的App
- Android中利用App实现消息推送机制的代码
- Android利用代码清除App的数据和重启设备
- Android中利用App实现消息推送机制的代码
- Android 两行代码实现换肤 从appcompat-v7原理出发
- Android利用代码清除App的数据和重启设备
- Android中利用App实现消息推送机制的代码
- Android中利用App实现消息推送机制的代码
- 代码原理 webkit WebKit-利用百度siteapp开发网站App-(IOS和Android版本)
- Android中利用App实现消息推送机制的代码
- Android中利用App实现消息推送机制的代码实例
- Android利用dimens.xml进行适配,使用代码生成不同的dimens.xml文件
- (素材源码)猫猫学iOS(四十一)UI之核心动画 两行代码搞定3D转场(做android的哭死)
- 一个实例学习Kotlin 开发 Android App 的全过程(内有代码)
- Android中利用icodetools工具快速定位App破解中关键点方法
- Android获取所有安装APP信息的详细代码
- 【Android】利用安卓的数据接口、多媒体处理编写内存卡Mp3播放器app
- App工程结构搭建:几种常见Android代码架构分析
- android 实现APP中改变头像图片的实例代码
- Android融合推送MixPush SDK集成多家推送平台,共享系统级推送,杀死APP也能收到推送