How to create a persistent AlarmManager

后端 未结 2 1062
[愿得一人]
[愿得一人] 2020-12-01 02:10

Edit: Clarified the question based on CommonsWare\'s answer

We\'re scheduling an an alarm via AlarmManager to trigger every 60 seconds. When our application is kille

2条回答
  •  爱一瞬间的悲伤
    2020-12-01 02:56

    About the alarm manager in the Docs - the explanation is somewhat confusing and I honestly still don't get it fully. I have this bit of code for the widget part that solved the problem in my case.

    package com.test.mytestwidget;
    
    import java.util.Calendar;
    import android.app.AlarmManager;
    import android.app.PendingIntent;
    import android.appwidget.AppWidgetManager;
    import android.appwidget.AppWidgetProvider;
    import android.content.Context;
    import android.content.Intent;  
    
    public class MyWidgetProvider extends AppWidgetProvider {   
    
        private PendingIntent service = null;  
    
        public void onUpdate(Context context, AppWidgetManager appWidgetManager,
                int[] appWidgetIds) {
            super.onUpdate(context, appWidgetManager, appWidgetIds);                
    
            final AlarmManager m = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);  
    
            final Calendar TIME = Calendar.getInstance();  
            TIME.set(Calendar.MINUTE, 0);  
            TIME.set(Calendar.SECOND, 0);  
            TIME.set(Calendar.MILLISECOND, 0);  
    
            final Intent i = new Intent(context, UpdateWidgetService.class);  
    
            if (service == null)  
            {  
                service = PendingIntent.getService(context, 0, i, PendingIntent.FLAG_CANCEL_CURRENT);  
            }  
    
            m.setRepeating(AlarmManager.RTC, TIME.getTime().getTime(), 30000, service);  
    
         }
    
         @Override  
         public void onDisabled(Context context)  
         {              
             final AlarmManager m = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);  
    
             m.cancel(service);  
             super.onDisabled(context);
         }      
    
    }
    

提交回复
热议问题