按主页键可以最大限度地减少如何检测应用程序?

时间:2017-07-12 12:49:36

标签: android android-activity android-lifecycle android-activitymanager

通过使用onPause(),我可以检查一个活动是否会进入后台。我的问题是onPause()每次调用即使我要从这个活动转到另一个活动。

所以我的主要问题是,如果我通过按主页按钮最小化应用程序我想从任务管理器中删除应用程序,当应用程序转到后台时,此代码将写入每个活动但不使用onPause()。

我的代码段位于 - >

之下
@Override
public void onPause() {
    if (isBackgroundRunning(this)){
        ExitActivity.exitApplication(getApplicationContext());
    }
    super.onPause();
}

public static boolean isBackgroundRunning(Context context) {
    ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
    List<ActivityManager.RunningAppProcessInfo> runningProcesses = am.getRunningAppProcesses();
    for (ActivityManager.RunningAppProcessInfo processInfo : runningProcesses) {
        if (processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
            for (String activeProcess : processInfo.pkgList) {
                if (activeProcess.equals(context.getPackageName())) {
                    //If your app is the process in foreground, then it's not in running in background
                    return true;
                }
            }
        }
    }

    return true;
}

ExitActivity用于从任务管理器中删除应用程序。

public class ExitActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    finish();
}

public static void exitApplication(Context context) {
    Intent intent = new Intent(context, ExitActivity.class);

    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NO_ANIMATION | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);

    context.startActivity(intent);
}

}

我看到了与此相关的大部分问题,但无法找到解决方案。请帮我。在此先感谢:)

1 个答案:

答案 0 :(得分:-1)

尝试在app / parent / launcher活动中的onPause()方法中调用finish()。当用户按下主页按钮时,这应该会终止应用程序