如何发现应用程序是在后台运行还是杀死了android



我有一个需求,需要检查应用程序是在后台运行还是被终止。我正在做如下所示的事情。

 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();
                }

上面的代码只是检查顶部活动包的名称,并判断它是否在后台。

如果我们在它上面打开两个或三个应用程序,因为它只取顶部应用程序包的名称,所以即使它在后台,它也不在后台。

请告诉我哪里做错了。

感谢

我认为您希望使用getRunningAppProcesses()并根据RunningAppProcessorInfo中定义的标志检查重要性字段。这应该会告诉你应用程序进程是可见的、后台的还是其他状态。

相关内容

  • 没有找到相关文章

最新更新