0

通过使用 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);
}

}

我看到了与此相关的大多数问题,但找不到解决方案。请帮我。提前致谢 :)

4

1 回答 1

-1

尝试在您的应用程序父/启动器活动中的 onPause() 方法中调用 finish()。当用户按下主页按钮时,这应该会杀死应用程序

于 2017-07-12T13:18:19.887 回答