【发布时间】:2014-03-03 12:13:48
【问题描述】:
我设置了一个服务,通过以下方式检查特定进程是否在时间间隔内运行:
appsList = am.getRunningAppProcesses();
我将其名称和 ID 保存为:
s = pross.processName;
i=pross.pid;
我使用以下命令启动默认启动器:
Intent intent = null;
final PackageManager pManager = context.getPackageManager();
for (final ResolveInfo resolveInfo:pManager.queryIntentActivities(new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME),pManager.MATCH_DEFAULT_ONLY ))
{
if(!context.getPackageName().equals(resolveInfo.activityInfo.packageName))
{
intent = new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setClassName(resolveInfo.activityInfo.packageName, resolveInfo.activityInfo.name);
break;
}
}
context.startActivity(intent);
比杀死进程:
mActivityManager.killBackgroundProcesses(s);
一切正常,但问题是它会调用启动器并关闭进程两次。 就像服务第二次检查它是否正在运行时,该进程仍在运行。
知道如何解决这个问题吗?
【问题讨论】:
-
你不应该一开始就这样做,因为它是一种与 Android 不一致的设计模式,系统而不是第三方开发人员管理进程生命周期。
-
我知道。但这对我的应用至关重要
-
为什么重要?为什么你认为你应该做一些导致Android启动一个进程(如果它不存在的话),然后转身杀死它?无论如何,没有人能真正提供帮助,因为您给出了两段孤立的代码,而对连接它们的程序一无所知。