网站建设资讯

NEWS

网站建设资讯

如何利用Android两行代码真正杀死App

这篇文章将为大家详细讲解有关如何利用Android两行代码真正杀死App,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

我们提供的服务有:网站建设、网站制作、微信公众号开发、网站优化、网站认证、徐州ssl等。为上千企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的徐州网站制作公司

Android是什么

Android是一种基于Linux内核的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由美国Google公司和开放手机联盟领导及开发。

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 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
文章地址:http://cdweb.net/article/ghiicd.html