簡體   English   中英

如何查找應用程序是在后台運行還是被殺死的android?

[英]How to find whether app is running in background or killed 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()並對照RunningAppProcessInfo中定義的標志檢查重要性字段。 那應該告訴您應用程序進程是可見的,背景還是其他狀態。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM