Как определить, что приложение свернуто от нажатия клавиши "Домой"?

Используя 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 ответ

Попробуйте вызвать finish() в методе onPause() в родительском / лаунчерном приложении. Это должно убить приложение, когда пользователь нажимает кнопку домой

Другие вопросы по тегам