2013-07-30 56 views
2

我想創建廣播AlarmManager(重複)與通知message.i傳遞我的壓光機對象從採摘。如果我不重新啓動我的設備,它正常工作。但是,當我重新啓動我的設備,因爲你知道我的calander對象將爲空。如何在重新啓動後管理我的重複鬧鐘,以及如何保存日曆日程表? 感謝您的想法。重複報警管理器重新啓動後

public class MyReceiver extends BroadcastReceiver { 
private static final int PERIOD = 10000; 
final public static String ALARM_ID = "AlarmId"; 
final public static String NOTIFICATION_ID = "NotificationId"; 


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

} 

static void scheduleAlarms(Context ctxt,Calendar c) { 
    AlarmManager alarManager = (AlarmManager) ctxt 
      .getSystemService(Context.ALARM_SERVICE); 
//notification servise 
    Intent i = new Intent(ctxt, ScheduledService.class); 
i.putExtra(ALARM_ID, 1); 
i.putExtra(NOTIFICATION_ID, 1); 

PendingIntent pi = PendingIntent.getService(ctxt, 0, i, 
      PendingIntent.FLAG_UPDATE_CURRENT); 
alarManager.setRepeating(AlarmManager.RTC,c.getTimeInMillis(),PERIOD, pi); 
} 
+2

的[重新啓動後的Android AlarmManager]可能重複(http://stackoverflow.com/questions/12512717/android-alarmmanager-after-reboot) – g00dy

回答

10

您需要使用BroadcastReceiver,並將其設置到BOOT_COMPLETED消息作出響應。你的代碼中。例如

在清單

<receiver android:name=".MyBootReceiver"> 
    <intent-filter> 
     <action android:name="android.intent.action.BOOT_COMPLETED" /> 
    </intent-filter> 
</receiver> 

註冊您的廣播接收器處理消息

MyBootReceiver.java

public class MyBootReceiver extends BroadcastReceiver 
{ 
    private static final String TAG = "MyBootReceiver"; 

    public void onReceive(Context context, Intent intent) { 
     Log.d(TAG, "onReceive"); 
     Calendar cal = this.getMyCalendar(); 
     this.scheduleAlarms(context, cal); 
    } 

    private Calendar getMyCalendar() { 
     // get your calendar object 
    } 

    private void scheduleAlarms(Context ctxt, Calendar c) { 
     AlarmManager alarManager = (AlarmManager) ctxt.getSystemService(Context.ALARM_SERVICE); 
     //notification servise 
     Intent i = new Intent(ctxt, ScheduledService.class); 
     i.putExtra(ALARM_ID, 1); 
     i.putExtra(NOTIFICATION_ID, 1); 

     PendingIntent pi = PendingIntent.getService(ctxt, 0, i, PendingIntent.FLAG_UPDATE_CURRENT); 
     alarManager.setRepeating(AlarmManager.RTC,c.getTimeInMillis(),PERIOD, pi); 
    } 
} 

這將在重置報警時間表開機。

+8

不要忘記添加<使用的許可機器人:名稱=「android.permission .RECEIVE_BOOT_COMPLETED「/> –