android 几种杀进程的方式

今天在编写 application 通用组件时,需要在低内存的回调中杀死进程,所以找了下 androd 傻进程的方法,总结下来有下面几种:

  1. 根据进程名称杀进程
android.os.Process.killProcess(android.os.Process.myPid());

代码本身没什么可以说的,需要注意的是,当进程在前台时,会杀死现有进程,然后再重新启动改线程,类似于手机的重启。但是只要我们把 app home 键切到后台,再杀进程就不会重启进程了,这里适合我的需求,当 app 进程处于后台进程并切在回收列表中部时,自己杀死自己,放置系统杀死集成回收,再次启动进程时 activity 栈缓存的问题

  1. 用 java api 退出当前线程
System.exit(0);

和上面面临同一个问题,进程在前台时,杀完进程会重启进程

  1. 杀别的进程,单杀不死自己

有杀死和重启进程2种,都需要相关权限

   ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
   activityManager.killBackgroundProcesses("com.zhang.wei");

  <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"/>
  ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
  activityManager.restartPackage("com.zhangwei");

<uses-permission android:name="android.permission.RESTART_PACKAGES"/>
  1. 需 root 权限

这个肯定用不上,但是这里也写上吧,方便对比查阅

try {
        ActivityManager am =(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
        Method method = Class.forName("android.app.ActivityManager").getMethod("forceStopPackage",String.class);
        method.invoke(am,pkgName);
    }catch(Exception e){
        e.printStackTrace();
    } 

<uses-permission android:name="android.permission.FORCE_STOP_PACKAGES" />
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 最近在准备android面试,整理了下相关的面试题,分为如下三个部分:android部分、Java部分、算法面试题...
    JasmineBen阅读 7,211评论 10 137
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,138评论 25 709
  • 过了3周岁生日后,喜乐确确实实发生了很大的变化,特别是在语言方面,也可能和关依桐姐姐的到来有关系,嘴巴仗也不是白打...
    乐小图阅读 369评论 0 0
  • 《庄子》的文风 (一)“三言” 《庄子·杂篇·天下 》: 以谬悠之说,荒唐之言,无端崖之辞,时恣纵而不傥,不 以觭...
    屡空阅读 5,597评论 0 1
  • 最近,加入了一个小众微信群做潜水者,每天都会被上千条聊天信息冲刷着,从小到每天上什么课,吃什么东西,大到人生...
    BentleyCui阅读 307评论 0 0