【发布时间】:2012-11-13 19:26:25
【问题描述】:
我正在尝试编写一个进程来杀死在后台运行的应用程序,但这些应用程序仍然显示在最近的应用程序列表中并且没有死:
ActivityManager am = (ActivityManager) getApplicationContext().getSystemService(
Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> processList = am.getRunningTasks(5);
for(int i=0; i<processList.size();i++){
cProcess = processList.get(i).baseActivity.getPackageName();
if(!allowedApps.contains(cProcess)){
am.killBackgroundProcesses(cProcess);
Log.v("","---------------------------------------------------------kill-----"+cProcess);
}
}
【问题讨论】:
-
不要这样做。 Android 有独特的进程生命周期管理,试图对抗这种机制将是一场失败的战斗。
-
不,我正在为零售客户构建启动器/信息亭模式,我们正在尝试保护平板电脑不访问某些第三方应用程序
-
愚蠢的问题,但你的清单中有
KILL_BACKGROUND_PROCESSES权限吗?其次,可能有更好的方法来保护信息亭模式应用程序。编写一个没有第三方应用程序图标(或应用程序托盘)的“启动器”程序,例如。覆盖系统按钮(例如参见here)是另一种方法。杀死第三方任务并不能真正阻止人们访问它们,还有更好的方法来做到这一点。 -
我确实拥有这些权限,并且我设法通过服务类对导航栏进行了皮肤处理。我们作为默认启动器运行。我想我只是想杀死当前在安装/初始启动时运行的所有应用程序,以确保没有任何东西已经在后台运行......或者至少杀死“最近的应用程序”按钮
-
顺便说一句,我们正在运行三星 Galaxy Tab 2 10" android 4.0