如何判断后台应用与Android关闭应用之间的区别?

时间:2011-09-13 15:02:48

标签: android android-activity lifecycle

我正试图找出一种方法来判断某个应用程序是否已关闭或已进入后台。我需要能够在任何应用程序中执行此操作。我正在使用AcitivityManager来轮询正在运行的应用程序,并将它们与我正在寻找的应用程序进行比较。问题是重要性级别设置为IMPORTANCE_BACKGROUND,当它实际上在后台时以及当我使用后退按钮“关闭”应用程序时。如何判断它是实际关闭还是在后台?

private boolean isActivityRunning(){
    ActivityManager activityManager = (ActivityManager) this.getSystemService( ACTIVITY_SERVICE );
    List<RunningAppProcessInfo> procInfos = activityManager.getRunningAppProcesses();
    for(int i = 0; i < procInfos.size(); i++){
        Log.d(TAG, "Polling Serivce at application " +procInfos.get(i).processName);
        if(procInfos.get(i).processName.equals(appLaunchedPackage)&&
            (procInfos.get(i).importance ==RunningAppProcessInfo.IMPORTANCE_VISIBLE || 
                    procInfos.get(i).importance ==RunningAppProcessInfo.IMPORTANCE_FOREGROUND || 
                    procInfos.get(i).importance ==RunningAppProcessInfo.IMPORTANCE_BACKGROUND)  ) {
            Log.d(TAG, "Polling Serivce - the app has been found!");
            return true;
        }
    }

2 个答案:

答案 0 :(得分:1)

当你点击按钮时,

Android中的应用程序没有“关闭”。后退按钮调用活动堆栈上的上一个活动,并将当前活动放在后台。

因此home按钮清除活动堆栈并调用启动器应用程序,后退按钮从堆栈调用以前的活动。两者都把当前的应用程序放在后台。

当系统资源不足时,android上的应用程序只会被关闭,即被杀死并从内存中删除。

答案 1 :(得分:0)

当您使用后退按钮从应用程序切换回桌面时,应用程序将变为后台。它没有关闭。

Android会在以后关闭它,如果需要,这不会是用户操作的结果。