我试了两种方法:ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
List<RunningAppProcessInfo>   procList = null;
int result=-1;
procList = activityManager.getRunningAppProcesses();
for (Iterator<RunningAppProcessInfo> iterator = procList.iterator(); iterator.hasNext();) {
  RunningAppProcessInfo procInfo = iterator.next();
  if(procInfo.processName.equals("com.android.phone")) {  
    try {
      //activityManager.restartPackage(procInfo.processName);
      activityManager.killBackgroundProcesses(procInfo.processName);
    } catch (Exception e){
    }
    break;
  }
}以及try {
  java.lang.Process process = Runtime.getRuntime().exec("kill -9 " + phoneId);
  // Waits for the command to finish.
  process.waitFor();
} catch (IOException e) {
  e.printStackTrace();
} catch (InterruptedException e) {
  throw new RuntimeException(e);
}
两种方法都没能成功的kill 掉 phone.请问这是为什么呢?难道phone不允许被kill? 进adb shell 可以kill的呀。

解决方案 »

  1.   

    android.os.Process.killProcess(android.os.Process.myPid());
    关闭应用程序
      

  2.   


    我的目的是类似任务管理器那样,去kill phone进程和其他进程, 你这个方法只能是在phone进程中kill itself.应该行不通的吧。
      

  3.   

    呵呵。Phone进程死掉后,底层有模块负责再启动它。而我的目的就是让Phone reset一次,所以目的达到了。如果要彻底的不让它启动,我暂时还没想到什么办法。
      

  4.   

    我是用第二种方法kill phone的。
      

  5.   


    我第一种方法killBackgroundProcesses也是无法执行成功,点击结束进程,没有异常,但是进程还是在运行列表中。
    第二种方法,获得了进程pid之后,在adb中用kill -9 pid,可以结束进程,在进程列表中看不到了,但用你说的代码,还是没有异常,也无法结束进程,请指点一下
    谢谢