0

在我的项目中,我使用AlarmManager开始Service每天一次。它工作正常。但是当手机重新启动时它会停止工作。 我通过网络搜索,他们建议开始BroadcastReceiverRECEIVE_BOOT_COMPLETED行动,并重新启动Alarm。 我不知道该怎么做。 请给我一个简单的方法来重置闹钟。我已经在这里发布了我的代码。如何在电话重新启动后重新启动闹钟?

我的代码开始报警

Intent start_alarm=new Intent(MainPage.this,MailService.class); 
    PendingIntent pi=PendingIntent.getService(MainPage.this, 100, start_alarm, 0); 
    AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 

    Calendar calendar = Calendar.getInstance(); 

    calendar.add(Calendar.DATE,1); 
    calendar.set(Calendar.HOUR_OF_DAY, 12); 
    calendar.set(Calendar.MINUTE, 30); 
    calendar.set(Calendar.SECOND, 0); 
    calendar.set(Calendar.AM_PM, Calendar.AM); 

    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),1000*60*60*24,pi); 

我AlarmService

@Override 
public void onStart(Intent intent,int startId){ 
    super.onStart(intent,startId); 

     //* My Code for sending Mail *// 

    } 

清单Registeration服务

<service android:name=".MailService"/> 

回答

3

只需创建一个广播接收器,并将其注册在清单意图action_reboot,然后启动报警的onReceive方法

这是如何注册接收

 <receiver android:name="com.packagename.RebootReceiver"> 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
     </intent-filter> 
    </receiver> 

这是接收器

public class RebootReceiver extends BroadcastReceiver 
{ 
public void onReceive(Context arg0, Intent arg1) 
{ 

    //start your alarm 
    } 
} 
+0

待办事项我添加了之前用于在@Amalo中启动闹钟的相同代码? –

+0

是的,你可以在这里添加相同的代码,但是这种方法:onReceive仅在重启后调用 – Amalo

+0

是的。您可以使用已经编码的相同代码到您的BroadcastReceiver实施 – mgokgoz