5 秒ごとにデータベースにクエリを実行するバックグラウンド サービスを実装しました。クエリが結果を返さない場合、サービスは 5 秒間待機し、データベースを再度クエリする必要があります。クエリが結果を返す場合、アクティビティを呼び出して結果を渡す必要があります。
基本的に doInBackground() でデータベースを読み取り、結果を返す AsyncTask から始めて、onPostExecute() がアクティビティを呼び出すようにしました。現在、サービスの onStartCommand() で AsyncTask.execute() を呼び出しています。ただし、これは、サービスの開始時にタスクが 1 回だけ呼び出されることを意味します。
代わりに、ここで説明されているように、自分のタスクにルーパー/ハンドラーを使用する必要があります: Android で x 分ごとに非同期タスクを実行する方法は?
しかし、そのコードを正しく理解していれば、サービスはどこかのループで startRepeatingTask を呼び出す必要がありますが、doSomething() 自体が x 分ごとに呼び出されることを望んでいました。
私はAndroidが初めてです。質問がかなり基本的なものであるか、他の解決策を理解していなかっただけで、誰かが私の状況でうまくいくかどうかを説明してくれることを望んでいた場合は申し訳ありません!
ありがとう!