Inicie el servicio de Android después de cada 5 minutos

Estuve buscando en Internet durante los últimos 2 días, pero no pude encontrar ningún tutorial útil. Creé un servicio y estoy enviando una notificación en la barra de estado cuando se inicia el servicio. Quiero que el servicio se detenga después de mostrar la notificación y volver a iniciarlo después de 5 minutos. Por favor, avíseme si es posible y bríndeme algunos útiles tutoriales si tiene alguno. Escuché de TimerTask y AlarmManager y traté de usarlos también, pero no pude obtener el resultado deseado.

EDITAR: Necesito que el servicio se inicie cada 5 minutos, incluso si mi aplicación no se está ejecutando.

No desea utilizar un TimerTask ya que esto depende de que su aplicación se ejecute continuamente. Una implementación de AlarmManager hace que sea seguro que su aplicación sea eliminada entre ejecuciones.

Declarar que intentó utilizar AlarmManager pero no obtuvo el resultado deseado no es una statement útil, ya que no le dice a nadie cómo ayudarlo a hacerlo bien. Sería mucho más útil para express lo que sucedió.

http://code4reference.com/2012/07/tutorial-on-android-alarmmanager/ contiene lo que parece ser un útil tutorial sobre AlarmManager . Estos son los puntos destacados:

1) Su alarma hará que una Intent dispare cuando caduque. Depende de usted decidir qué tipo de Intent y cómo debe implementarse. El enlace que proporcioné tiene un ejemplo completo basado en un BroadcastReceiver.

2) Puede instalar su alarma con un ejemplo como:

 public void setOnetimeTimer(Context context) { AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE); Intent intent = new Intent(context, AlarmManagerBroadcastReceiver.class); intent.putExtra(ONE_TIME, Boolean.TRUE); PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0); am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + (1000 * 60 * 5), pi); } 

A continuación he proporcionado tres archivos, MainActivity.java para el servicio de inicio, Segundo archivo MyService.java que proporciona el servicio para 5 minutos y el tercero es archivo de manifiesto.

MainActivity.java

 public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); startService(new Intent(this, MyService.class)); //start service which is MyService.java } } 

MyService.java

  public class MyService extends Service { public static final int notify = 300000; //interval between two services(Here Service run every 5 Minute) private Handler mHandler = new Handler(); //run on another Thread to avoid crash private Timer mTimer = null; //timer handling @Override public IBinder onBind(Intent intent) { throw new UnsupportedOperationException("Not yet implemented"); } @Override public void onCreate() { if (mTimer != null) // Cancel if already existed mTimer.cancel(); else mTimer = new Timer(); //recreate new mTimer.scheduleAtFixedRate(new TimeDisplay(), 0, notify); //Schedule task } @Override public void onDestroy() { super.onDestroy(); mTimer.cancel(); //For Cancel Timer Toast.makeText(this, "Service is Destroyed", Toast.LENGTH_SHORT).show(); } //class TimeDisplay for handling task class TimeDisplay extends TimerTask { @Override public void run() { // run on another thread mHandler.post(new Runnable() { @Override public void run() { // display toast Toast.makeText(MyService.this, "Service is running", Toast.LENGTH_SHORT).show(); } }); } } } 

AndroidManifest.xml

   

Crea un objeto Timer y dale un TimerTask que realice el código que deseas realizar.

 Timer timer = new Timer (); TimerTask hourlyTask = new TimerTask () { @Override public void run () { // your code here... } }; // schedule the task to run starting now and then every hour... timer.schedule (hourlyTask, 0l, 1000*60*60); // 1000*10*60 every 10 minut 

La ventaja de usar un objeto Timer es que puede manejar múltiples objetos TimerTask, cada uno con su propio timing, delay, etc. También puede iniciar y detener los temporizadores siempre que mantenga el objeto Timer al declararlo como una clase variable o algo.