バッテリーの状態、wifi接続、位置データを定期的に監視し、結果をファイルに書き込む(後でサーバーに送信する)アプリを作成しています。アプリのインストール時にモニタリングを無効にする必要がありますが、それを有効にするユーザーは再起動後も存続する必要があります。たくさん読んだ後、私は基本的に2つのオプションがあることに気づきました:
- サブクラス
Service
化して、私の活動からそれを解き放ちます。フォアグラウンド、スティッキーなどに設定し、Androidによって殺されないことを期待します-Androidがそれを再作成する場合は注意してください(実際には3つのサービスがあるはずなので、それらの間の同期は面倒になる可能性があります)。サービスでスレッドを開始し(私が推測するエグゼキューターは必要ありません)、それを持っていThread.sleep(REGULAR_INTERVAL)
ます。起きて、データを収集してファイルに書き込みます。収集した情報をブロードキャストし、それが実行されている場合はアクティビティに表示します(ブロードキャストレシーバーが登録されます)。すすぎ、繰り返しwhile(true)
ます。これを中断する方法があります - アクティビティにPendingIntentをAlarmManagerに登録してもらいます。これにより、すべてのREGULAR_INTERVALが実行されます。このアプローチの技術的な詳細についてはあまり調べていませんが、このPendingIntentでIntentServiceを作成して実行できるようになることを願っています(これは道のりのようです)スレッド機構を無料で使用し、シャットダウンしますそのままで)。このアプローチのスケルトンコードを歓迎します。
どちらの場合も、共有設定を確認するためにブートレシーバーを登録する必要があると思います(すでにこれを行っています)。ケース1の場合はサービスを開始し、ケース2の場合はアラームイベントのレシーバーを登録してアラームマネージャーを設定します。 -それは私がいくつかのスケルトンコードを必要とする部分です。
それで、これを構築し始める前に、どちらが好ましいアプローチでしょうか?
要約すると、アプリはいくつかの電話のプロパティを監視し、ユーザーが電話を切ることを選択するまでそれらをファイルに書き込む必要があります。