2011-02-15 22 views
11

Androidにスリープステージ/レベルの概念はありますか?Android:スリープステージ/ Android搭載デバイスのレベル?

メーリングリストを閲覧すると、「Deep Sleep」というステージが存在することがわかりました。デバイスがこの状態になったら、すべてのアプリケーションの実行を停止しますか?もしそうなら、ユーザーが電源ボタンを押すだけでなく、何がデバイスを復帰させるでしょうか?

答えて

20

メーリングリストを閲覧すると、「Deep Sleep」というステージが存在することがわかりました。

本当に「深い眠り」と呼ばれる段階はありません。 「目を覚ます」「寝る」「オフ」のみがあります。

デバイスがこの状態になると、すべてのアプリケーションの実行が停止しますか?

デバイスがスリープ状態になるか電源がオフになると、すべてのプロセスが実行されなくなります。

もしそうなら、ユーザーが電源ボタンを押すのに加えて、デバイスを復帰させる他に何が起きるでしょうか?

  • AlarmManager
  • 電話の着信からアラーム
  • 、着信テキストメッセージ
  • あなたは無線データ(ない無線LAN)、そのソケット
  • 上の着信パケットに開いたソケットを使用している場合

これらは大きなものです。他にもあるかもしれない。

+0

デバイスがこれらの3つの状態のいずれかになったときに通知を受け取る方法があるかどうか知っていますか? – zer0stimulus

+3

@ zer0stimulus:そうではありません。 CPUがスリープモードのためにパワーダウンされているため、CPUがスリープモードのためにパワーダウンされていることを伝えるのは難しいです。同様に、デバイスがシャットダウンされているため、デバイスがシャットダウンしているとは言い難いです。これらの州に多少関連している放送意図(例えば、 'ACTION_SCREEN_OFF')がいくつかありますが、それはそれです。 – CommonsWare

+1

デバイスはどれくらいの間起きていますか?メッセージを処理するためにソケットから読み込んだ直後にウェイクロックを取得する必要がありますか? – Erdal

4

私は次の動作を気づいた:

  1. あなたがあなたの活動のオープンを持っているし、数秒後にそれ
  2. との対話を停止する(これは、デバイスが設定されている方法によって異なります)画面が移動しますオフ。

    画面がオフになると、onSaveInstanceとが呼び出されます。

  3. 数秒後(通常は〜15S)デバイスがスリープモードに入る(これが正しい名前である?)

    これが発生した場合、以下のメソッドが呼び出されます:onStop(偽isFinishingリターンを呼び出します)、 onRetainNonConfigurationInstanceおよびonDestroy

    これまでのところとても良いです。今度は奇妙な動作が始まります:最後にonDestroyが終了した直後に別のアクティビティが作成されます:onCreateonStartonRestoreInstanceStateonResume、最後にが呼び出されます。

    私はこの奇妙な動作の理由は何も見つかりません。一時停止モードにまっすぐに進むために別のアクティビティが作成されるのはなぜですか?これは、元の活動のonDestroyの後にimmediatlyが起こる!

これはGalaxy Sでテストされました。何も何も起こらず、何も起こっていないことをテストしませんでした。他に何かが起きるかどうかはわかりません。

私はこれがあなたに役立つことを願っています。

1

コモンズウェアのリストへの短い追加。電話が眠っている間に定期的にメソッドを実行する方法を探した後、私はスリープモード中にTimerTaskが機能することを発見しました。

TimerTaskは、私の経験上、サービスからメソッドを実行し、アクティビティーを開始しないことがすべて必要な場合には簡単です。

+2

面白いのは、http://groups.google.com/group/android-developers/browse_thread/thread/9e2878053a422718の末尾にあるため、Mark Murphyは、「TimerTask'」はデバイスがスリープ状態になるのを防ぐものではなく、デバイスを復帰させます。 –

0

@ CommonSWareが言及した「awake」、「asleep」、「off」以外にも、CPUが眠っているのか、画面だけがあるのか​​が区別されます。例えば、official docs hereはそれをこのように説明します

バッテリーの消耗を避けるために、迅速アイドル を残しているAndroidデバイスを眠りに落ちる。しかし、アプリケーション がになる必要がある場合は、またはCPUを起動して、 を完了するために目を覚ましてください。

CommonsWareが説明した3段階のフレームワークでは、CPUが停止しない限り、画面が暗いデバイスがおそらく「眠っている」と分類されません。しかし、上記の段落が暗示しているように、画面暗状態は正当に「眠っている」と呼ばれることがあります。間違いなく、これは、人々がCPUが眠っているということを明確にするために「深い眠り」を参照する理由です。

This doc pageはまた、Androidデバイスがアイドル状態に放置されると、それはまず にスクリーンをオフに、暗く、そして最終的にCPUをオフになり

に言及しています。これにより、 のデバイスのバッテリが急速に放電されなくなります。

あなたは包括的になりたいのであれば、あなたは「睡眠段階/レベル」の一覧に「暗く」追加できます。

  1. 目を覚まし
  2. オフ
  3. 画面を暗くCPUオフ(真 "スリープ"または "ディープスリープ")
  4. 電源オフ

アイドルタイムアウトが発生したとき、明らかに2から3から4への移行はかなり高速です。しかし、画面が深い眠りに移行することなくオフになることができる別の時があります。例えばオーディオを再生するとき(少なくとも特定のアプリでは)。

私は、デバイスがオフスクリーンからCPUオフに移行する時期を予測する方法を教えてください。タイムアウトはどのくらいの期間ですが、私はその情報を見つけていません。私が見つけたのはFLAG_KEEP_SCREEN_ON and WAKE_LOCKで、どちらか一方が起きないようにしています。

P.S.あなたが徹底的になりたい場合は、「睡眠段階」のリストにdaydreamを数えることができる:

デイドリームは、Androidデバイス用の[アンドロイド4.2のように]新しいインタラクティブなスクリーンセーバーモードです。デバイスがドックに挿入されているときには が自動的にアクティブになり、 の代わりにデバイスがアイドル状態のまま充電器に接続されているときは、 がアクティブになります。

以前実行していたアプリの観点からは、デイドリームは別のアプリに切り替えるように振る舞います。あなたの活動が止まっても、デバイスの睡眠の問題ではありません。

+0

その質問は私のシナリオとは異なります。 –

+0

ええ、それを忘れてしまったかもしれません。 –

関連する問題