8
votes

Les notifications disparaissent dès que le service se termine

J'ai un service qui raccroche un site Web pour des données alors si nécessaire, donne à l'utilisateur une notification à l'utilisateur.

Le problème que je vais avoir, c'est que les notifications disparaissent dès que le service se ferme (ce qui pourrait être instantanément) . Le code ci-dessous est tout le code de notification que l'application a. Je n'ai pas mis de code pour annuler les notifications. xxx

si cela fait une différence (à peu près sûr, je n'utilise pas le contexte de l'application.

Mes services sont démarrés périodiquement, traite un site Web, notifie si nécessaire, puis se ferme.

à la fin de mon service au lieu de vous appeler à la fin de votre service secondes, puis appelez-vous (). Ensuite, la notification reste pendant 30 secondes, puis disparaît. Rien de pertinent n'apparaît dans LOGCAT au moment où les notifications disparaissent.

Je n'ai pu tester que d'utiliser des ICS jusqu'à présent.


3 commentaires

Cela devrait être bien. Généralement, les notifications ne disparaîtront que si votre demande est tuée de force. Je m'attendrais à ce que quelque chose se bloque. Il serait intéressant de voir quel code vous utilisez pour "dormir" (dis-tu réellement le fil de dormir?) Et quel fil qui fonctionne. Il serait également intéressant d'essayer de supprimer le sommeil des années 30 pour l'expérience de l'expérience et de voir si le même comportement se produit.


Où est le code qui annule les notifications si vous en avez? Aussi fyi, vous ne devriez pas utiliser des chaînes directes comme Android.Intent.action.Action. * Parce que c'est une constante disponible dans la classe d'intention. @ user1531605


Si le service est invité à arrêter «juste avant», la notification est affichée, c'est-à-dire sur la même chaîne d'exécution du code, la notification serait effacée.


4 Réponses :


2
votes

Vous semblez avoir d'abord oublié le manuel du développeur de checker. Voir ici http://developer.android.com/guide/topics/ui /notifiers/notifications.html et recherchez Flag_ongoing_event et Flag_no_clear drapeaux.

Je n'ai été capable que de tester avec des ICS jusqu'à présent.

C'est pourquoi les simulateurs sont très utiles. Essayez-le. Cela fait partie de SDK.


3 commentaires

Je l'ai lu, ce que ce ne sont pas ce que je veux. Les notifications doivent pouvoir être effacées par le bouton "Notifications claires", donc le flag_no_clear ne vous aidera pas. Et ce n'est pas un événement continu. Depuis les documents ", il ne faut pas être défini si cette notification est en référence à quelque chose qui s'est passé à un moment donné à temps, comme un appel téléphonique manqué.". C'est exactement ce que c'est, une référabilité de quelque chose qui s'est passé à un moment donné. Bien que comme un Sidenote, j'ai testé avec ces drapeaux au cas où et avaient les mêmes résultats. Les notifications ont toujours disparu lorsque le service fermé.


Avez-vous vérifié votre code sur Pre 4.x Androids ?. L'émulateur suffit.


Publiez le code source de votre service, uniquement les recherches, comme la création et la destruction.



4
votes

Le code que vous avez posté des travaux. Je l'ai testé à partir d'une activité et d'un service sur JB, et la notification reste lorsque les composants sont arrêtés. J'ai même vérifié que je pouvais tuer le processus et que la notification reste. Essayez de dénuder l'application et voyez si le problème persiste. Vérifiez spécifiquement que vous n'appelez pas Annuler sur la notification par erreur.


0 commentaires

1
votes

Veuillez essayer l'ancien chemin sur le même appareil et dites-nous s'il se comporte de la même manière:

private static void CreateNotificationCompat(int notificationID, String link, String title, String text, Context ctx) {
    String ns = Context.NOTIFICATION_SERVICE;
    NotificationManager mNotificationManager = (NotificationManager) ctx.getSystemService(ns);
    Notification notification = new Notification(R.drawable.notify_icon, title, System.currentTimeMillis());
    notification.flags = Notification.FLAG_AUTO_CANCEL;
    PendingIntent contentIntent;
    Bundle bundle = new Bundle();
    Intent notificationIntent = new Intent("android.intent.action.VIEW", Uri.parse(link));
    contentIntent = PendingIntent.getActivity(ctx, notificationID,
                notificationIntent, 0);
    notification.setLatestEventInfo(ctx, title, text,
            contentIntent);
    mNotificationManager.notify(notificationID, notification);
}


0 commentaires

1
votes

Juste AA Remarque Ce problème se produit lorsque le début du terrain () est utilisé et ensuite s'arrête () est appelé.


1 commentaires

J'ai un problème similaire. J'ai besoin d'un utilisateur plus lointore et de m'arrêter, mais après s'arrêter, je veux conserver la notification. En fonctionnant, il ne peut pas être licencié, mais après s'arrêter, je souhaite que l'utilisateur puisse l'effacer / le rejeter ou retoucher un bouton sur ma notification pour redémarrer le service. Actuellement, comme je ne pouvais pas trouver une autre manière que je prévois de poster Une autre notification qui dit "Touchez ici pour recommencer à nouveau". Qu'est-ce que tu penses?