Anuluj powiadomienie o usunięciu aplikacji z panelu wielozadaniowego

ZarządzamTRWAJĄCY powiadomienie z mojej aplikacji (nie z usługi).

Kiedy zabijam aplikację z menedżera zadań przyciskiem „Zakończ”,powiadomienie znika.

Kiedy usuwam aplikację z panelu wielozadaniowego, aplikacja zostaje zabita, alepowiadomienie pozostaje.

Moje pytania to:

Jak złapać to wydarzenie, aby usunąć powiadomienie?Co się stanie, gdy aplikacja zostanie usunięta z panelu wielozadaniowego? Aplikacja jest niszczona, ale proces pozostaje żywy? Jest to normalne?

Jako aktualizacja:

Wszystkie moje działania rozszerzają klasę MyActivity (która rozszerza aktywność) metodami:

@Override protected void onCreate(Bundle state) {
    super.onCreate(state);
    ((MyApplication) getApplication()).onActivityCreate(this, state);
}

@Override protected void onDestroy() {
    super.onDestroy();
    ((MyApplication) getApplication()).onActivityDestroy(this);
}

Moja aplikacja rozszerza klasę MyApplication (która rozszerza aplikację) metodami:

private List<Activity> activities = new ArrayList<Activity>();

protected final void onActivityCreate(Activity activity, Bundle state) {
    if(activities.isEmpty() && state == null) {
        onStart();
    }
    activities.add(activity);
}

protected final void onActivityDestroy(Activity activity) {
    activities.remove(activity);
    if(activities.isEmpty() && activity.isFinishing()) {
        onExit();
    }
}

protected void onStart() {
    // some code
}

protected void onExit() {
    // some code
    notificationManager.cancel(NOTIFICATION_ID);
}

activities to lista wszystkich bieżących działań

To nie jest najprostszy mechanizm, ale potrzebuję go

Czy powinienem zamiast tego korzystać z usługi?

Jako nowa aktualizacja:

W mojej metodzie onExit (), jeśli I Log debuguje wiadomość, aby wiedzieć, co dzieje się w ten sposób:

public void onExit() {
    for(int i = 0; i < 100; i++) {
        Log.d(TAG, "onExit");
    }
}

mała ilość dziennika pojawia się raz na dwa, nie wszystkie (np. 13/100)

Rozumiem więc, że usunięcie aplikacji z wielozadaniowej siły panelu do zabicia aplikacji bez czekania na zakończenie metod kończy się poprawnie ... Ale dlaczego nie przetworzyć?!

Jak mogę wymusić prawidłowe zakończenie?

questionAnswers(5)

yourAnswerToTheQuestion