2010-07-18 5 views
6

Est-ce que Android réveille du sommeil profond afin de diffuser ACTION_TIME_TICK? De l'expérimentation, je ne le pense pas, mais je cherche une réponse définitive.TIME_TICK diffusera-t-il en mode veille prolongée?

Mon expérience a consisté à enregistrer simple BroadcastReceiver mettre à jour un TextView sur réception:

registerReceiver(new BroadcastReceiver() { 
    int ctr = 0; 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     testView.setText("Time ticks: " + ++ctr); 
    } 
}, new IntentFilter(Intent.ACTION_TIME_TICK)); 

A 4 ticks, j'éteint l'écran pendant environ 5 minutes, puis se remettre sur, et lire 6 tiques . À 13 ticks, j'ai tourné l'écran pendant 10 minutes, puis je l'ai rallumé, et le nombre de tiques a été de 14. Il semble seulement augmenter de 1-2 ticks, peu importe combien de temps je laisse le téléphone éteint, c'est pourquoi je soupçonne qu'il ne diffuse pas l'action pendant le sommeil profond.

+0

J'éprouve ce que je suspecte est le même problème. Avez-vous trouvé une solution/solution de contournement? – mschonaker

Répondre

9

J'ai regardé dans le code Android. Non, cette émission ne réveillera pas le téléphone. Il utilise un AlarmManager.RTC type Alarm pour diffuser les changements d'heure. Pourquoi avez-vous besoin d'être averti littéralement chaque minute? Comment configurer votre propre alarme en utilisant le type AlarmManager.RTC_WAKEUP?

AVERTISSEMENT: Si vous faites cela toutes les minutes, votre batterie se videra. Je suggère de le faire moins souvent, comme toutes les heures.

S'il vous plaît laissez-moi savoir si cela est utile.

Emmanuel

+0

Je ne me rappelle pas exactement exactement comment j'allais l'utiliser (j'ai abandonné le travail il y a quelque temps), mais le projet impliquait de faire un suivi de disponibilité plus détaillé que ce qui est fourni par le système. En fait, je pense que je préférais ne pas faire de notifications lorsque le téléphone était endormi, mais je voulais juste une confirmation de cela (puisque la documentation API n'est pas claire sur ce point). –

+0

L'utilisation du gestionnaire d'alarme fonctionne correctement. Merci. Je voulais juste connaître la cause de ce comportement. Tu l'as trouvé. – mschonaker

3

Une meilleure expérience: Au lieu de mettre à jour un TextView que vous ne pouvez pas voir lorsque le téléphone est éteint, écrire dans le journal avec:

Log.v("Tick","Total ticks: " + ++ctr); 

Vous pouvez garder un oeil sur ce à Logcat pendant que votre téléphone est endormi .

Questions connexes