2011-08-01 10 views
1

私は PowerManager.goToSleep() が呼び出されたときにアンドロイドサービスに何が起こるかを把握しようとしています。PowerManager.goToSleepが呼び出されたときにAndroidサービスにはどうなりますか?

x時間の間デバイスがスリープ状態にあるとします。デバイスがスリープ状態から抜け出すと、サービス内にonPause()やonRestart()などのLifeCycleメソッドがなく、変更のサービスに通知するために使用されます。私はマニュアルに従って、全てWakeLocksが上書きされていることを知っている

は、そのサービスが破壊され、再起動していないであろうことを意味しているのですか?

http://developer.android.com/reference/android/os/PowerManager.html#goToSleep%28long%29

答えて

1

ので、サービスが破壊され、再起動していないであろうことを意味しているのですか?

号には、それはサービスが変更されていないことを意味します。すべてのスリープモードは、CPUを停止させます。

+0

実行時にパッケージマネージャがDEVICE_POWER権限を無効にするため、PowerManager.goToSleep()を実行できません。 私の質問は以下の goToSleep(から生じる)がCPUを停止し、その後、前に)goToSleep(への呼び出しを実行していたすべてのオブジェクトがなければなりません。 a)は、それらを開始したインテントを破壊し、ウェイクアップにオブジェクトが再び送信されました。 \tまたは b)何らかの方法で保存され、CPUが再び起動するとその実行を復元できるようにします。 私はそれがどれであるか把握することができません。 – Archit

+0

これをテストする最も近い方法は、onStartCommand()がSTART_REDELIVER_INTENTを返し、実行中に強制的に停止するサービスを開始することです。サービスはすぐに再起動するようにスケジュールされます。このサービスから、onCreate()が呼び出されたことがわかります。サービスが再インスタンス化されていることを意味します。 goToSleep()を呼び出すと、これと同様の動作が発生しますか? – Archit

+0

@Archit Joshi:「パッケージマネージャは実行時にDEVICE_POWER権限を取り消します」 - 最初はその権限を持っていません。 "私はそれがどれであるか把握することができません。" - それは単にRAMに保存されています。 「goToSleep()を呼び出すと、これに似た動作が起こるのですか?」 - いいえ。 – CommonsWare

関連する問題