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?