我可以在调用onDestroy或finish()之后得到isAppRunning == false吗?

时间:2014-04-15 16:28:57

标签: android service

我有后台服务,在我的应用程序的“设置”活动中,我有一个按钮来打开/关闭服务。如果我将服务设置为关闭,当用户打开应用程序时我希望服务启动,但只要应用程序打开就保持打开状态。当应用关闭时,服务将随应用关闭。只要用户从应用程序中正常退出,我就可以这样做,我的意思是按退出键。我的问题是,如果用户通过按下主页按钮退出应用程序或其他东西出现在前面并关闭我的应用程序,那一点我想检测应用程序将关闭并关闭服务。

我试图做的是:

        ActivityManager activityManager = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
        boolean isActivityFound = false;

        List<RunningAppProcessInfo> procInfos = activityManager.getRunningAppProcesses();
        for (int i = 0; i < procInfos.size(); i++) {
            if (procInfos.get(i).processName.equals("com.myapp")) {
                isActivityFound = true;
            }
        }

        if (isActivityFound == false) {
            Intent backgroundIntent = new Intent(getApplicationContext(), BackgroundActivity.class);
            getApplicationContext().stopService(backgroundIntent);
        }

我在致电finish();onDestroy();之后尝试了此操作,但始终获得isActivityFound = true。 是否有机会从此应用中获取isActivityFound = false,并能够与应用一起关闭服务?

2 个答案:

答案 0 :(得分:0)

您需要一个事件处理程序或检查退出应用程序的其他可能方法,以便您可以在之前结束服务 使用调试器并按照步骤操作 搜索stackoverflow&#34; android退出&#34;:
也许这些有帮助:
How to exit from the application and show the home screen?
Android - Preventing users without special permissions to exit the application or power off the phone
when a user exit my android app without clicking logout button the user still appears loggedin in my online database

答案 1 :(得分:0)

您可以使用onWindowFocusChanged(boolean hasFocus)来检测活动何时失去焦点。

当您按下主页键,向下移动top_bar等时,此方法会启动。