Raisons que le passé Intention serait NULLE dans onStartCommand
Est-il un autre motif que l'Intention qui est passé à onStartCommand(Intent, int, int)
serait NULLE par ailleurs le système de redémarrer le service par l'intermédiaire d'un drapeau comme START_STICKY
?
Aussi, lorsque le service est redémarré, le système Intent.getAction()
méthode renvoie NULL... parfois. L'intention n'est pas NULL juste getAction()
J'ai demandé à ici aussi, mais n'ai pas reçu de réponse pour l'instant.
Mise à JOUR: Après avoir discuté avec Mark Murphy, il a suggéré que je reviens START_REDELIVER_INTENT
dans le onStartCommand()
de rappel dans mon service au lieu de START_STICKY
de sorte que l'ensemble de l'intention est envoyé à la suite d'un redémarrage.
Je n'ai pas ce faire d'abord parce que j'étais inquiet que si le service a été de tenter de faire quelque chose, puis dans le milieu de quelque chose que le service a été redémarré... qu'il reconnaisse qu'il a commencé à faire quelque chose? Je suppose que c'est logique, j'ai besoin d'être responsable 🙂
- Plutôt que d'éditer votre question avec la réponse, s'il vous plaît ajouter une réponse et de l'accepter, de sorte que votre question cessera d'apparaître dans la série de questions sans Réponse -- merci.
- Juste une note pour quelqu'un avec le même problème. J'ai trouvé que lorsque je reçois l'erreur que
intent
estnull
suronStartCommand()
, elle est causée par une autre erreur qui est visible dans le LogCat avant cette. Je ne sais pas pourquoi, mais c'est ce que j'ai observé et il est très facile de l'oublier. - Je voudrais, mais cette question n'est pas vraiment résolu. Jusqu'à ce que je reçois une réponse définitive quant au pourquoi d'une Intention est null ou comment éviter de nulle intention sans recourir à l'aide de START_REDELIVER_INTENT (qui, je l'appris plus tard, n'est pas ce dont j'avais besoin, mais toujours résoudre certains problèmes donc j'ai quitté mon edit) je ne peux pas accepter une réponse.
- Avez-vous un avis ce qui, précisément, a été de lancer une erreur?
- N'a pas vraiment d'importance. Dans mon cas, c'était par exemple
NullPointerException
quelque part dans l'un des Activités. Plus tard, c'était une autre erreur. Mais dans les deux cas, ma trace de la pile a montré que mon service était en cours d'exécution tandis que cette erreur s'est produite - aintent
qui a éténull
comme dans votre cas. Je pensais un temps assez long ce qui est mal, quand j'ai décidé de défiler jusqu'à la trace de la pile et il est apparu que quelque part en haut, j'ai eu mon erreur vraie. Après la résolution de celui-ci, également l'une avecnull
intent
disparu. - Je suis surpris, il n'y a pas de discussion de l'entrée de drapeaux lorsqu'il démarre avec une valeur nulle intention. Il semble que le système doit communiquer quelque chose au sujet de pourquoi il a commencé de cette façon.
- exactement droit +1. Je remonte et trouvé une autre erreur qui fait que le processus d'être tué.
Vous devez vous connecter pour publier un commentaire.
Je suis surpris, il n'y a pas de discussion de l'entrée de drapeaux. Je vais surveiller cela dans les journaux avec les éléments suivants:
Mise à jour: Drapeaux étaient de 0, donc il n'y avait rien exploitables là. J'ai quitté le null de vérifier avec aucune perte de fonction.
Edit: Ok, je l'ai trouvé dans la documentation de START_STICKY de tous les lieux! "si il n'y a pas tout dans l'attente de commencer à commandes pour être remis au service, il sera appelée avec une valeur null à l'intention de l'objet, alors vous devez prendre soin de le vérifier."
http://developer.android.com/reference/android/app/Service.html
override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int {}
Intent?
. A travaillé pour moi. Mais bien sûr vous avez besoin pour gérer correctement nulle intention.onStartCommand(intent: Intent?, ...)
il devrait fonctionner. Et puis il suffit de ne pas faireintent!!
, mais bien de vérifier si l'intention est null.