2

上記の質問は基本的に私の質問を説明しています。Advanced Task Killerはどのようにアプリケーションを強制終了しますか?

私はこの質問に対する秒の答えで言及された方法を試しました。どちらを使用していますActivityManager.killBackgroundProcesses.

for(RunningAppProcessInfo runningProcess : runningProcesses){
                    for(ApplicationInfo nonCompliantApp : nonCompliantApps){
                        if(runningProcess.pkgList != null) for(String runningAppPackageName : runningProcess.pkgList){
    //                      if(runningProcess.processName.startsWith("gameapps.avatar.")){
    ////                            FileManager.writeToLogFile(SystemApplicationManager.class, "run", LogMessageType.DEBUG, "Game Apps: " + runningProcess.processName + "  pkg: " + runningProcess.pkgList.length + " - " + runningProcess.pkgList[0]);
    //                      }

                            if(runningAppPackageName.equals(nonCompliantApp.packageName)){
                                ActivityManager amgr = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
                                ShellCommandManager.executeShellCommand("kill " + runningProcess.pid);
                            amgr.killBackgroundProcesses(nonCompliantApp.packageName);
                                FileManager.writeToLogFile(SystemApplicationManager.class, "run", LogMessageType.DEBUG, "Process found and killed: " + nonCompliantApp.packageName);
                            }

                            if(!keepRunning)break;
                        }
                    }

問題は、上記のコードを実行した後、[設定]->[アプリ]->[実行中]で確認したところ、同じアプリケーションがまだ実行中であることがわかりました。私がこれをテストしているデバイスは、AndroidICSを実行しているHTCOneXです。

私は何を間違っているのですか?いくつかの助けや説明をいただければ幸いです。

4

2 に答える 2

1

実行中のアプリケーションを取得し、そのプロセス ID を使用して実行中のプロセスを強制終了します。小さなコードが役立つかもしれません。

int pid = android.os.Process.myPid();
android.os.Process.killProcess(pid);
于 2012-06-14T06:38:20.370 に答える
0

これを試して:

private static void killProcess(String process_name)
{
     ActivityManager  manager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
     List<ActivityManager.RunningAppProcessInfo> listOfProcesses = manager.getRunningAppProcesses();

     for (ActivityManager.RunningAppProcessInfo process : listOfProcesses)
     {
         if (process.processName.equals(process_name))
         {

                 manager.restartPackage(process.pkgList[0]);
                 Log.e(TAG, "Killed process [" + process.pkgList[0] + "]"); 

         }
     }
}
于 2012-10-04T07:14:00.167 に答える