intent - android workmanager reboot



재부팅 후 Android AlarmManager (1)

재부팅 후에도 계속 지켜야 할 경보가 있습니다. 부트 수신기에서 사용을 시도했지만 다시 시작하지 않습니다. 부팅 수신기를 이해하고 모든 경보를 다시 시작하는 방법을 잘 모르겠습니다. 이미 알림 수신자가 한 명 있지만 동일한 수신기를 사용할 수 있는지 또는 새 수신기가 필요한지 여부를 모릅니다.

누구든지 좋은 자습서를 가르쳐 주거나 나를 도와 줄 수 있습니까?

건배

코드 :

    DatabaseHandler db = new DatabaseHandler(this);  
    List<UAlarm> alarms = db.getAllAlarms();        
    AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);  
    for (UAlarm ua : alarms) {  
        String programme = ua.getTitle();  
        String startTime = ua.getStart();  
        String endTime = ua.getEnd();  
        String nowPlaying = ua.getChannel();  
        db.addAlarm(new UAlarm(programme, startTime, endTime, nowPlaying, ""));  
        final UAlarm ut = new UAlarm();  
        ut.setTitle(programme);  
        ut.setStart(startTime);  
        ut.setEnd(endTime);  
        ut.setChannel(nowPlaying);  
        ut.setId(db.getLastEntered());  
        String [] bla = startTime.split(":");  
        int hour = Integer.parseInt(bla[0].trim());  
        int minute = Integer.parseInt(bla[1].trim());  
        minute -= 2;  
        Calendar cal = Calendar.getInstance();  
        cal.set(Calendar.HOUR_OF_DAY, hour);  
        cal.set(Calendar.MINUTE, minute);  
        Intent intenta = new Intent(this, NotificationMenu.class);  
        String name = programme;  
        intenta.putExtra("name", name);  
        intenta.putExtra("id", db.getLastEntered());  
          PendingIntent pendingIntent = PendingIntent.getBroadcast(this, ua.getId(),  
            intenta, PendingIntent.FLAG_CANCEL_CURRENT);  
          am.set(AlarmManager.RTC_WAKEUP,  
            cal.getTimeInMillis(), pendingIntent);      
    }  
}  

NotificationMenu가 알림이기 때문에 AlarmManager를 사용하고 있습니다.


부팅 수신기를 이해하고 모든 경보를 다시 시작하는 방법을 잘 모르겠습니다.

그냥 당신의 코드를 호출하여 setRepeating() (또는 무엇이든)을 AlarmManager 에서 호출 setRepeating() .

예를 PollReceiver 샘플 프로젝트 에서 PollReceiverPollReceiver 를 받도록 설정됩니다. onReceive() 에서 알람을 다시 예약합니다.

package com.commonsware.android.schedsvc;

import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.SystemClock;

public class PollReceiver extends BroadcastReceiver {
  private static final int PERIOD=5000;

  @Override
  public void onReceive(Context ctxt, Intent i) {
    scheduleAlarms(ctxt);
  }

  static void scheduleAlarms(Context ctxt) {
    AlarmManager mgr=
        (AlarmManager)ctxt.getSystemService(Context.ALARM_SERVICE);
    Intent i=new Intent(ctxt, ScheduledService.class);
    PendingIntent pi=PendingIntent.getService(ctxt, 0, i, 0);

    mgr.setRepeating(AlarmManager.ELAPSED_REALTIME,
                     SystemClock.elapsedRealtime() + PERIOD, PERIOD, pi);
  }
}




alarms