2010-11-21 13 views
0

WakeLockを使用して画面を保持する機能をアプリケーションのユーザーに提供したいと考えています。私は、彼らがいないとき、特定の私は、ユーザーの携帯電話のロックを引き起こさないようにしたいと私は現在、私のとonResumeオーバーライドからそれを呼び出しています安全にWakeLockを複数のアクティビティに実装するには

protected void processWakeLock(int pauseResume) { 
    switch (pauseResume) { 
    case STATE_RESUME: 
     if (mKeepScreenOn) { 
     wakeLock.acquire(); 
     } 
     break; 
    case STATE_PAUSE: 
     if (wakeLock.isHeld()) { 
     wakeLock.release(); 
     } 
     break; 
    } 
} 

:私の主な活動で、私は次の関数を作成しました私のアプリケーションを積極的に使用しています。私のアプリケーションには3つのフルスクリーンビューがあります。 WakeLockがアプリケーションのすべての部分に引き継がれ、残りの電話機に対して安全であることを保証する最善の方法は何ですか。

私の最初の考えは、多くのボイラープレートのように思えますが、私の活動のそれぞれに同じコードスニペットを複製することです。 onStartonStopを使用することはできません。これは、別の全画面アクティビティに切り替えると表示が失われるためです。

ここにある図と情報(http://developer.android.com/guide/topics/fundamentals.html)に基づいて、ロックを適用するためのより良い方法はありません。

答えて

5

WakeLockを使用しないでください。これはサービスのためのものです。余分な許可が必要です。

代わりに、お使いのアクティビティでViewsetKeepScreenOn()を使用してください。どのように嗜好を収集しているかによって、onCreate()SharedPreferenceまたはIntentの余分に基づいてそれを呼んでください。

+0

それでは、「WakeLock」 – Thomas

+1

@Thomasを使用するのが適切なのはいつですか?「サービス」です。 'View'に' setKeepScreenOn() 'が存在するので、' Activity'でそれを行うことには意味がありません。 – CommonsWare

+0

'setKeepScreenOn()'は 'SCREEN_DIM_WAKE_LOCK'と同じ動作をしません – Thomas