如何杀死Android应用后台进程?

时间:2017-01-19 02:31:30

标签: android background-process multiprocess

我有一个包含两个进程的应用。第二个进程在创建活动时开始。在下面找到清单中该活动的摘录:

    <activity
        android:name=".ActivityInAnotherProcess"
        android:process=":anotherprocess"
        android:launchMode="singleTask"
        ...

&#34;:另一个过程&#34;开始我需要以某种方式通过adb在代码中杀死主进程。

我已经尝试过#34;终止应用程序&#34;在DDMS中,主进程被杀死,但在几秒钟后重新创建。

我已尝试过此代码:

String packageName = c.getPackageName();
ActivityManager activityManager = (ActivityManager) c.getSystemService(Context.ACTIVITY_SERVICE);
activityManager.killBackgroundProcesses(packageName);

但主要进程被杀死只是在几秒钟后重新创建。

更新 上面发布的代码有效。我在另一个进程中启动Activity后几秒钟调用它,但似乎在我杀死主进程之前其他进程没有完全启动。现在我从其他进程中杀死了主要进程。这现在有效。谢谢大家!

1 个答案:

答案 0 :(得分:0)

List<ApplicationInfo> packages;
PackageManager pm;
pm = getPackageManager();
packages = pm.getInstalledApplications(0);

ActivityManager mActivityManager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);


for (ApplicationInfo packageInfo : packages) {
    if((packageInfo.flags & ApplicationInfo.FLAG_SYSTEM)==1)continue;
    if(packageInfo.packageName.equals("mypackage")) continue;
    mActivityManager.restartPackage(packageInfo.packageName);
} 

如果API&gt; = 8,请使用mActivityManager.killBackgroundProcesses(String packageName)

如果API&lt; 8使用mActivityManager.restartPackage(packageInfo.packageName);

相关问题