2011-09-13 8 views
1

私は自分のアプリケーションでいくつかの活動をしています。主な活動で私は起床ロックを定義しました:Android、アプリケーションの穴に入っているときにWake Lockが有効ですか?

PowerManager powerManager = (PowerManager)getSystemService(Context.POWER_SERVICE); 
wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, "My Lock"); 

onPause()メソッドでリリースしました。私の質問は、それはアプリケーション全体でアクティブですか?または、私が持っているそれぞれのアクティビティでそれをコピー/ペーストする必要がありますか?

おかげで

答えて

5

限りWakeLockが取得されるようなので、長いウェイクロックが保持されています。あなたのWakeLockオブジェクトの存続期間が関連しています。 WakeLockがもう使用されなくても、まだロックしている間にGCされた場合、ガーベジコレクション中に(finalize()メソッドで)解放されます。

したがって、ウェイクロックはacquire()とrelease()の間でアクティブです。必要なアクティビティから必要に応じてコードがこれらの関数を呼び出すようにする必要があります。

アプリケーションでWakeLockをグローバルに使用する場合は、android.app.Applicationを拡張し、マニフェストで指定し、アプリケーションレベルでウェイクロックを管理します。

関連する問題