【问题标题】:How to restart Alarm after phone Reboot?手机重启后如何重启闹钟?
【发布时间】:2015-10-06 11:55:44
【问题描述】:

在我的项目中,我使用AlarmManager 每天启动一次Service。它工作正常。但是当手机重新启动时它会停止工作。 我通过网络搜索,他们建议启动BroadcastReceiver 以收听RECEIVE_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);

我的闹钟服务

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

       //* My Code for sending Mail *//

   }

服务清单登记

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

【问题讨论】:

    标签: android broadcastreceiver alarmmanager android-alarms repeatingalarm


    【解决方案1】:

    只需创建一个广播接收器并使用意图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
       }
     }
    

    【讨论】:

    • 我是否在@Amalo 这里添加了我之前用来启动警报的相同代码?
    • 是的,您可以在此处添加相同的代码,但此方法:onReceive 仅在重新启动后调用
    • 是的。您可以使用已编码到 BroadcastReceiver 实现的相同代码
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-07
    • 2014-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    相关资源
    最近更新 更多