2010-04-20 7 views
0

J'ai un récepteur de diffusion SMS dans mon application avec une valeur booléenne statique pour rendre le récepteur actif ou non. J'ai alors un widget pour activer ou non le récepteur sms (via cette valeur statique). Tout fonctionne bien mais je viens de remarquer que, si la mémoire du téléphone devient faible, l'auditeur SMS perd son état et l'application ne fonctionne pas comme prévu. Je suppose que c'est lié au cycle de vie d'android. Je n'ai aucun service en arrière-plan et le système tue le processus. L'approche que j'ai utilisée devrait-elle être évitée? Dois-je toujours commencer un service uniquement pour éviter le processus android tuer?Problème de cycle de vie Android

Merci

Tobia Loschiavo

Répondre

0

La seule façon fiable que j'ai constaté que GLOBALS est de les mettre dans un service. La méthode Android consiste à utiliser onSaveInstanceState, puis à récupérer l'état dans toutes les différentes méthodes qui peuvent ou non être appelées avec cet état. Même si cela n'est pas complètement fiable, vous pouvez également écrire l'état des préférences dans onPause et les lire dans onResume. Notez également que, selon votre manifeste, tout ce qui peut tuer votre activité, comme l'ouverture du clavier ou la rotation du téléphone, ne se limite pas à la mémoire insuffisante.

+0

J'ai stocké l'activation dans les préférences ... il semble fonctionner – Matroska

+0

J'ai aussi mis une alarme avec AlarmManager. Si l'application est tuée, l'alarme survit-elle? De la documentation, il semble que oui. – Matroska

+0

Presque tout survivra à une activité. Ils sont censés être conçus pour scintiller continuellement dans un hors de l'existence. – drawnonward