Aussi loin que je comprenne depuis Cette question < / a> et le Référence officielle et guide , uniquement Dans mon application, j'ai une seule activité qui commence un service pour jouer de la musique. Dans l'Activité comme dans si OnDestroy () code> est appelé, quand mon L'application est supprimée de la récente liste d'applications.
OnDestroy () Code>, le service n'est même pas mentionné, mais je reçois toujours une exception illégale d'argument lorsque mon application est supprimée de la liste, pointant vers ledit service: P>
OnDestroy () code>, le service n'est même pas mentionné, il doit y avoir autre chose à essayer d'accéder au service qui n'existe plus. Une idée de ce que cela pourrait être? P>
Onpaause () code> et / ou
OnStop () code> est également appelé, existe-t-il un moyen de distinguer l'enlèvement cas des autres cas dans lesquels ces deux sont appelés? p> p>
3 Réponses :
Lorsque vous ouvrez les applications récentes Pour votre exception Votre méthode OnStartCommand doit avoir la signature suivante P> selon le Documentation P> Cela peut être null si le service est redémarré après son processus
est parti, et il avait précédemment retourné quoi que ce soit sauf
Start_sticky_compatibility. P>
blockQuote> p> OnAUSAUSE CODE> et
OnStop CODE> sont appelées, alors lorsque votre activité est éliminée uniquement
OnDestroy code> est laissée dans le cycle de vie .
Si je le fais comme ça, comment puis-je utiliser des extras? Si je fais une intention nullable dans la signature, je rencontre des problèmes là-bas: si (intention.hadesextra ("jouer")) code> me donne "seulement?. Ou !!. Sont autorisés". Pour
si (intention? .HaseXtra ("Play")) CODE> I Obtenir une incidence de type (attendu
Intention code>, trouvé
Intention? Code>) et pour CODE>) et Code> Si (Intention !!. HasExtra ("Play")) Code> Je reçois une exception NullPoinger au lieu de l'argument illégal.
Vous devez gérer le null. Vous pouvez revenir tôt si l'intention est NULL Ie Intention?: Retour Service.Start_not_sticky Code> Vous devez également consulter les drapeaux qui sont transmis car ils vont indiquer ce qui est gong.
comme dans OnDestroy (), le service n'est même pas mentionné, il doit y avoir quelque chose d'autre essayant d'accéder au service qui n'existe pas plus. Aucune idée de ce que cela pourrait être? P> blockQuote>
Dans certains téléphones, lorsque l'application est supprimée des applications récentes, elle ressemble à la définition et à la forte application Fermer. Donc, il ferme tous les services liés à l'application. C'est pourquoi vous avez fait face à un tel problème. P>
Si l'onpaause () et / ou Ontop () sont également appelées, y a-t-il un moyen de distinguer l'élimination des autres cas dans lesquels ces deux sont appelés? p> blockQuote>
Tant que je sais qu'il n'y a aucun moyen de distinguer l'étui d'élimination. P>
mais je reçois toujours une exception d'argumentation illégale jetée lorsque mon application est Supprimé de la liste p> blockQuote>
Pour résoudre ce problème, vous pouvez jeter un coup d'œil sur ce que ge3ng posté. Cela résoudra votre problème. P>
Dans un service, il y a un rappel Ontockremoved code> qui sera appelé lorsqu'une application est éliminée par un utilisateur.
Qu'en est-il du moment où le système arrêter l'application? ou toute l'application s'est terminée? @ Ge3ng
Ensuite, il n'est pas garanti d'être appelé. Ontockremoved CODE> n'est garanti qu'à être appelé si l'utilisateur l'initie à la liste des applications récentes.
Vous avez un code> code> qui renvoie Étant donné que vous avez dit à Android (via Remarque: je suppose que start_sticky code> à partir de
OnStartCommand () code>. Lorsque vous balayez la tâche de la liste des tâches récentes, Android tue le processus OS hébergeant vos activités et votre
Service Code>. P>
start_sticky code>) que vous souhaitez que votre
service code> soit redémarré dans l'événement que Android tue ça, Android est conforme à votre demande et redémarre votre < Code> Service Code>. Quand cela fait cela, il appelle
OnStartCommand () code> avec un
null code>
Intention code>. P>
OnDestroy () code> ne s'appelle pas du tout sur vos activités. Vous pouvez ajouter une journalisation à
OnDestroy () Code> pour voir si c'est vrai. P>