2017-05-02 18 views
0

私はRunkeeperに似たAndroidアプリをやっています。私がアプリケーションを起動するとき、私は時計用のスレッドを開始し、gps用のonLocationChangedアップデートも持っています。画面がオンのときはすべて正常に動作しますが、画面がオフの場合は時計が停止します。WakelockはAndroidで動作しません

私はPARTIAL_WAKE_LOCKを試しましたが、何も起こりませんでした。 マニフェストのコードは次のとおりです。

<uses-permission android:name="android.permission.WAKE_LOCK"/> 

、ここでは

PowerManager.WakeLock wl; 

とも

PowerManager pm=(PowerManager)Context.getSystemService(Context.POWER_SERVICE); 
    wl=pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,"my wakelock"); 
    wl.acquire(); 

を試してみました

PowerManager pm=(PowerManager)this.getSystemService(Context.POWER_SERVICE); 
    wl=pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,"my wakelock"); 
    wl.acquire(); 

のonCreate()内

私にはわからないコードである理由clockthread WAKE_LOCKがあるときに停止します。私はbutttonlistenerのボタンを押すと、それがexplenationの一部であることができる場合、clockthreadが開始されますか?誰でも何か示唆があります ありがとう

+0

「何も起こっていない」とはどういう意味ですか?何が起こると思いますか?それはどうしたのですか? –

+0

こんにちは。私が期待するのは、クロックを処理する実行中のスレッドは実行を継続しますが、画面がスリープすると終了します。そのclockthreadはbuttonlistenerメソッドでスタートしています。 –

+0

あなたは "クロックス"とは何を意味しますか?あなたはあなたのアプリやシステムの何かを指していますか? –

答えて

0

私はあなたがWakelockが何をしているか誤解していると思います。ウォークロックは、あなたのプログラムがそれを保持している間、デバイスをアクティブに保ちます(CPUが動いていると思います)。

  • あなたアプリケーションのライフサイクルを制御
  • 、アプリケーション・プロセス内の任意のスレッドのライフサイクルを制御します!!:ここでは行いませんいくつかのものがあります

実際、Androidは実際に何をしていても、アプリケーションを停止することが絶対に保証されています。それが起こると、PowerManagerから切断され、あなたのワockロックが自動的に解放されます。

AlarmManagerが必要な場合があります。

+0

助けてくれてありがとう! –

関連する問題