我需要检查应用程序是在后台运行还是已杀死。我的行为如下所示。
ActivityManager am = (ActivityManager) context
.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> alltasks = am.getRunningTasks(1);
for (ActivityManager.RunningTaskInfo aTask : alltasks) {
// Used to check for CALL screen
if (aTask.topActivity.getClassName().equals("com.android.phone.InCallScreen")
|| aTask.topActivity.getClassName().equals("com.android.contacts.DialtactsActivity")) {
// When user on call screen show a alert message
Toast.makeText(context, "Phone Call Screen.", Toast.LENGTH_LONG).show();
}
// Used to check for SMS screen
if (aTask.topActivity.getClassName().equals("com.android.mms.ui.ConversationList")
|| aTask.topActivity.getClassName().equals("com.android.mms.ui.ComposeMessageActivity")) {
// When user on Send SMS screen show a alert message
Toast.makeText(context, "Send SMS Screen.", Toast.LENGTH_LONG).show();
}
// Used to check for CURRENT example main screen
String packageName = "com.sap.rex.ui";
if (aTask.topActivity.getPackageName().equals(packageName)) {
isInBackground = false;
Toast.makeText(context, "Current Example Screen.", Toast.LENGTH_LONG).show();
}
以上代码仅检查顶级活动包名称是否在后台,并告知它。
如果我们在它上面打开两个或三个应用程序,因为它只采用顶级应用程序包名称,它说它不在后台,即使它在那里。
请告诉我我在哪里做错了。
由于
答案 0 :(得分:0)
我认为您要使用getRunningAppProcesses()并根据importance中定义的标记检查RunningAppProcessInfo字段。这应该告诉您应用程序进程是否可见,背景或其他状态。