1

ユーザーがアクティブなとき、またはより一般的なときにのみ実行したいService:電話がアクティブなとき。画面がオフのときにサービスを実行する必要はありません。しかし、ユーザーが自分の電話のロックを解除するとすぐに、サービスを再度実行したいと考えています。

この動作を実現するにはどうすればよいですか?

私の実際のタスク: logcat をキャプチャしたい。したがってService、「logcat」プロセスの出力を読み取るスレッドを生成する を作成しました。

電話がロックされたとき、そのバックグラウンド スレッドは正確にどのように動作しますか? ウェイクロックなどは保持されません。電話がスリープ状態になると Android はスレッドを一時停止しますか、それともそのスレッドは Android がスリープ状態にならないようにしますか? 電話が目覚めた後、どのように再開されますか?

また、15 分ごとに起動して logcat を解析する「AlarmManager」を介してアラームを登録することも考えました。しかし、このアプローチでは、いくつかの logcat 行を見逃す可能性があります。

4

1 に答える 1

1

サービスを再起動ACTION_USER_PRESENTする場合:またはの受信者を登録できますACTION_SCREEN_ON: このインテントは、デバイスがウェイクアップした後 (たとえば、キーガードがなくなったとき)、ユーザーが存在するとき (電話がアクティブなとき) にシステムによって送信されます。または電話画面がオンのとき。

サービスを停止するACTION_SCREEN_OFF場合:ユーザーが存在しない場合、またはモバイル画面がオフの場合に、このインテントがデバイスによって送信されるインテントを使用します

于 2012-04-07T12:32:50.103 に答える