平台 2.3.1,已知包名,想批量杀死后台还在运行的应用,我添加了<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"> 权限,并用killBackgroundProcesses方法,但是没有任何效果,请教改怎么解决这个问题。

解决方案 »

  1.   

    killBackgroundProcesses 目前来说是有些问题。有些package杀不死。
    源码里面用的是forceStopPackage 方法来强行杀死的。但该方法是隐藏的。
    网上有资源说是可以用反射调用该方法。比较复杂,且不能通用。(需要系统签名)我试过带root权限的机器用kill -9 命令杀死进程。但是杀死后有些程序会重启,比如qq,360。
    估计是有些程序在系统的保护堆栈中,只有forceStopPackage 能杀死(杀死进程的同时,清楚保护堆栈中的信息)。这个只是推测,如果有大大知道的更详细希望指出.目前问题未能很好的解决。查看了众多代码也没发现有更好的解决方法。如果楼主想做一个进程管理类的app,我是并不推荐的。杀死占用内存的后台程序只是用户的一厢情愿罢了
      

  2.   

    一会重启不要紧,不考虑这方面,我看360的主配置文件里并没用android.permission.FORCE_STOP_PACKAGES这个权限,那它是怎么关闭的呢,我写死包名用killBackgroundProcesses就是关不掉,但是360可以
      

  3.   

    你仔细看看360查出来的进程,有时候都没有QQ的。但qq 却在状态栏里面
      

  4.   

    除非拥有系统权限,否则无法Kill任何一个应用的。
    Markets上类似360这种软件,其实都是调用
    public void restartPackage (String packageName)