当前位置: 首页 > 面试题库 >

重新启动后重复警报管理器

袁华清
2023-03-14
问题内容

我想创建带有通知消息的广播AlarmManager(重复)。我从Pickers中传递日历对象。如果我不重启设备,它将正常工作。但是,当我重新启动设备时,您知道我的calander对象将为null。重新启动后如何管理重复警报以及如何保留日历时间表?感谢您的想法。

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);
}

问题答案:

您需要使用BroadcastReceiver并将其设置为响应BOOT_COMPLETED消息。例如

在清单中注册您的BroadcastReceiver

<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);
    }
}

这将在启动时重置您的警报计划。



 类似资料:
  • 目前,我正在开发一个新的android项目,它使用后台服务。因为android版本 我的通知服务如下 我使用以下代码启动AlarmHandler 我还注册了以下广播接收器 我的问题是有时它会跳过我的通知。时间安排为晚上10:00和早上7:00。收到晚上10点的通知(请注意,我在晚上10:00使用电话或在晚上10:00前几分钟使用)。但并非所有时间都收到上午7:00的通知。还要注意的是,我每天都需要

  • 我正在构建一个通知应用程序,它使用警报管理器设置多个通知来提醒用户的日常任务,当手机打开一切都很好,但当重新启动手机时,通知会出现,但通知数据会丢失(例如通知内容),这些数据从我的第一个活动中保存到意图中,这是下面的代码。( 我的推送通知接收器

  • 问题内容: 嗨,我正在开发警报应用程序,因为我需要在用户选择的不同日期的同一时间重复调用警报。 我meen如果我设置报警时间8PM和重复选项sunday,tuesday闹钟会在每个被调用sunday,tuesday。 任何帮助,将不胜感激。 问题答案: 为此使用广播接收器和Sqlite数据库。

  • 我目前正在开发一个android应用程序,在那里我需要设置持久的警报,它将在特定的日期和时间触发并显示一个通知。它工作良好,但系统清除所有警报重新启动。 从其他问题中,我知道如果我为创建一个,我可以重新启动已取消的警报。我的问题是:关于那些警报,我需要保留哪些信息,以便在需要时重新武装它们? 有些人说,我需要持久化所有附加项和fire日期时间,以便在重新引导时重新创建。 其他人说,如果我只保留的,

  • 我想停止重新加载页面时,我没有选择类别和点击提交按钮。有人能帮我吗? null null