Android TIMERTASK NE PAS être appelé toujours (surtout pas appelé lorsque le téléphone n'est pas débogué)

StackOverflow https://stackoverflow.com//questions/9643817

Question

J'ai du mal à identifier un problème sur Android Timerask (je crois) qui me rend fou,

Le scénario est: J'utilise un phonestatelistener pour démarrer une minuterie après avoir appelé un appel et après que certains appels, reproduisez un son.

Tout fonctionne parfaitement, mais dès que je ne suis pas en mode de débogage (ou simplement avec le téléphone branché sur l'ordinateur), le son ne sonne pas toujours, la plupart de ces moments ne parlent pas à la manière.

Mon plus gros problème est que je ne peux pas identifier clairement le problème car cela ne se produit que lorsque le téléphone est débranché et je ne peux pas lire les journaux. Je ne pouvais que reproduire le problème une fois (pas de son après appel) et lire les journaux à ce sujet, où je me suis rendu compte que: OnCallstatechanged a été appelé, la minuterie était correcte, mais le TIMERTASK n'a jamais été appelé (ni prévu).

Alors, après avoir lu quelques questions ici, j'ai utilisé un gestionnaire au lieu d'une minuterie. Mais j'ai exactement les mêmes problèmes. En fait, avec le gestionnaire, ce problème est beaucoup plus facile à reproduire en branchant et déballer le téléphone (à l'aide de la minuterie, il était plus difficile de reproduire la question sans son).

Est-ce que je fais des choses mal ou dois-je avoir besoin de mettre en œuvre autre chose?

Tout commentaire sera apprécié, Merci d'avance

Modifier

Apparemment, avec le gestionnaire, cela se produit parce que le téléphone se couche dès que l'appel commence. Cependant, utiliser Wake_Lock ne fonctionne pas pour l'empêcher, existe-t-il d'autres alterlatifs d'exécuter un fil lorsque le téléphone est dormir?

Était-ce utile?

La solution

Eh bien le problème avec cela, comme je l'ai dit, était que le téléphone a arrêté la minuterie lorsqu'il allait dormir pendant l'appel.J'ai fini par utiliser l'alarmeManager.

Il est important de noter que l'alarmreceiver doit être une classe publique ou la méthode de réception ne sera jamais appelée.

Cependant, je ne peux pas encore comprendre pourquoi la minuterie a parfois fonctionné et parfois pas.

Cordialement

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top