Android, как запустить задачу, когда приложение находится в фоновом режиме телефона

Я пытаюсь создать службу в первый раз, которая запускает метод из активности каждые 15 секунд после того, как кнопка переключения отмечена, когда приложение является фоном телефона, и пока что учебные пособия не были полезны; это мой код до сих пор. Простите меня, если я буду выглядеть глупо здесь, его первый раз, используя сервис.

Код услуги

package com.example.adrian.trucktracker;

import android.app.Service;
import android.content.Intent;
import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;

import java.util.Timer;
import java.util.TimerTask;

public class AutoUpdateService extends Service {
 Locator locator = new Locator();
 Timer myTimer = new Timer();
 private class MyTimerTask extends TimerTask
 {

 @Override
 public void run() {
 Handler handler = new Handler(Looper.getMainLooper());

 handler.postDelayed(new Runnable() {
 @Override
 public void run() {

 locator.TemperatureCatch();
 }
 }, 1000 );
 }
 }

 @Override
 public void onStart(Intent intent, int startId) {
 super.onStart(intent, startId);
 MyTimerTask myTimerTask = new MyTimerTask();
 myTimer.scheduleAtFixedRate(myTimerTask, 0, 15000);
 }

 @Override
 public void onDestroy() {
 super.onDestroy();
 myTimer.cancel();
 stopSelf();
 }

 @Override
 public IBinder onBind(Intent intent) {
 // TODO: Return the communication channel to the service.
 throw new UnsupportedOperationException("Not yet implemented");
 }
}

Код кнопки переключения

@Override
 public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
 if (isChecked)
 {

startService(new Intent(this,AutoUpdateService.class));
 }
 else
 {
 stopService(new Intent(this,AutoUpdateService.class));
 }
1 ответ

У вас есть право использовать Сервис. Не используйте Таймер, так как это дополнительный поток, который вам не нужен. Что вы можете сделать, так это использовать AlarmManager, чтобы планировать запуск вашего сервиса каждые 15 секунд (интервал). Это вызовет интервал времени вашей службы, вызвав onStartCommand в вашей службе, где вы сможете делать все, что вам нужно, читая (если нужно) намерение из параметров onStartCommand.

licensed under cc by-sa 3.0 with attribution.