Annuler une notification sur supprimer l'application de multitâche panneau

- Je gérer une COURS de notification à partir de mon application (pas de service).

Quand j'ai tuer l'application dans le gestionnaire des tâches avec le bouton "Fin", notification disparaître.

Quand j'ai supprimer l'application de multitâche panneau, l'application est tué, mais notification reste.

Mes questions sont:

  • Comment attraper cet événement à une notification claire?
  • Ce qui se passe lorsque l'application est supprimée de multitâche panneau? L'Application est détruit, mais le processus de rester en vie? Est-il normal?

Comme une mise à jour:

Toutes mes activités s'étend MyActivity classe (qui s'étend à l'Activité) avec des méthodes:

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

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

Et mon application s'étend MyApplication classe (qui étend le champ d'Application) avec des méthodes:

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 est une liste de toutes les activités en cours d'exécution

Ce n'est pas la plus simple mécanisme, mais j'en ai besoin

Dois-je utiliser un service à la place?


Comme une nouvelle mise à jour:

Dans mon onExit() la méthode, si je me connecte un message de débogage pour savoir ce qui se passe comme ceci:

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

une petite quantité de journal s'affiche une fois sur deux, pas tous (ex: 13/100)

Donc, je comprends que supprimer l'application de multitâche panneau de force pour tuer application sans attendre près de méthodes, pour terminer correctement... Mais pourquoi ne pas la traiter ?!

Comment puis-je la force pour mettre fin à correctement ?

  • Pouvez-vous montrer le code que pour la façon dont vous construisez votre Avis?
  • C'est la plus simple possible: de la Notification la notification = nouvelle Notification(...); notificationManager.notify(NOTIFICATION_ID, notification);
  • Je tiens à préciser que le problème ne se produit pas lorsque je quitte l'application directement, mais quand je l'ai mis dans le fond et je vide la liste des applications
InformationsquelleAutor alex | 2012-10-21