私はデータロガーアプリを書いています.5分ごとに正確にhttpリクエストを行う必要があります. ユーザーはバッテリーの消耗を認識しており、私にとっては問題ありません。そのための適切な通知を備えたフォアグラウンド サービスを使用しており、実行可能なタスクを 5 分ごとにポストするハンドラー スレッドがあります。電話が DOZE MODE に入ると、スレッドが中断され、ランナブルが実行されないようです。それは正常な動作ですか、それとも何か不足していますか? それを行う方法についての助けをいただければ幸いです。
スレッドを開始するサービス コード:
private void startTheForegroundService() {
NotificationCompat.Builder builder = new NotificationCompat.Builder(MainService.this);
builder.setPriority(Notification.PRIORITY_HIGH);
startForeground(1000, builder.build());
httpThread = new HttpThread("Ping Thread", Thread.NORM_PRIORITY);
httpThread.start();
httpThread.loop();
}
スレッド コード:
public class HttpThread extends HandlerThread {
public Handler mHandler;
public HttpThread(String name, int priority) {
super(name, priority);
}
public synchronized void waitUntilReady() {
mHandler = new Handler(getLooper(), new Handler.Callback() {
@Override
public boolean handleMessage(Message msg) {
return false;
}
});
}
public void loop() {
waitUntilReady();
mHandler.post(new Runnable(){
@Override
public void run() {
//code for the http request.
}
});
}
}