2 votes

Android Persistent ContentObserver

Les observateurs de contenu sont-ils persistants dans Android ? Si je crée un observateur de contenu dans une activité, cet observateur continuera-t-il à fonctionner jusqu'à ce que je le supprime ?

En gros, je suis en train de créer un service pour les SMS, où à la réception et à l'envoi, je poste le SMS vers un service web, afin que je puisse vérifier mes messages sans avoir mon téléphone.

Si l'observateur de contenu est lié à la vie de l'activité, comment puis-je créer un ContentObserver qui recevra toujours des notifications sur le contenu:/sms/

6voto

CommonsWare Points 402670

Si je crée un observateur de contenu dans un activité, cet observateur continuera-t-il à fonctionner jusqu'à ce que je supprime l'observateur.

Seulement si vous aimez perdre de la mémoire, et seulement jusqu'à ce qu'Android termine le processus. Les activités qui se comportent bien n'enregistreront pas d'observateurs de contenu sans les désenregistrer à un moment approprié (par ex, onDestroy() ).

comment puis-je créer un ContentObserver qui recevra toujours des notifications sur le contenu:/sms/

Le fournisseur de contenu SMS ne fait pas partie du SDK. Il peut ou non fonctionner sur votre téléphone. Il peut ou non fonctionner dans les futures versions d'Android.

La seule façon d'avoir un ContentObserver qui reste un peu en place, c'est de l'avoir dans une Service . Cependant, les services ne sont pas éternels, non plus . En outre, il n'existe aucun moyen de faire en sorte qu'un observateur "reçoive toujours des notifications".

Désolé.

0voto

Bqin1 Points 245

J'ai essayé de nombreuses façons de faire fonctionner cela, la seule façon (non idéale) qui a fonctionné est d'avoir un service de premier plan qui fonctionne même après que votre activité soit détruite. Le service d'avant-plan enregistre le contentobserver. L'inconvénient est que les services d'avant-plan nécessitent une notification permanente.

Je cherche toujours un moyen de faire fonctionner un service d'arrière-plan sans qu'il soit recyclé, et cela devient de plus en plus difficile. Des trucs comme "sticky" et récepteur de diffusion pour redémarrer le service ne fonctionnent plus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X