相关疑难解决方法(0)

重启后的Android AlarmManager

我有一组警报,我需要在重启后保留.我尝试过使用启动接收器,但它们不会重新启动.我不确定我是否理解启动接收器以及如何重新启动所有警报.我已经有一个接收器用于我的通知,但不知道我是否可以使用相同的接收器或我是否需要一个新接收器?

谁能指点我任何好的教程或帮助我?

干杯

代码:

    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, …
Run Code Online (Sandbox Code Playgroud)

android reboot restart alarms

27
推荐指数
1
解决办法
3万
查看次数

如何创建持久的AlarmManager

编辑:根据CommonsWare的答案澄清问题

我们通过AlarmManager安排一个警报,每60秒触发一次.当我们的应用程序被杀死时,我们的警报似乎不再执行.即使应用程序被手动或系统杀死,有没有办法使这些警报持续存在?

这对我们来说是一个问题,因为我们有一个显示时间的小部件应用程序.这意味着我们需要每分钟更新一次.为了解决AppWidgetProvider的onUpdate方法的30分钟更新限制,我们使用AlarmManager.它通常运行良好,但有些用户报告时间不同步.在与其中几个人交谈之后,我怀疑我们的应用程序是通过任务杀手应用程序手动杀死的,或者Android本身正在杀死我们的应用程序.

对根问题的任何其他替代解决方案(在窗口小部件中保持时间同步)也是受欢迎的.

以下是我们执行的用于安排警报的代码:

Intent intent = new Intent(UPDATE_TIME);
PendingIntent pIntent = PendingIntent.getBroadcast(ctx,
  0 /* no requestCode */, intent, PendingIntent.FLAG_UPDATE_CURRENT );

// get alarm params
Date d = new Date();
long timeTilMinuteChange = 60*1000-d.getSeconds()*1000;
long startTime = System.currentTimeMillis() + + timeTilMinuteChange;

AlarmManager am = (AlarmManager) ctx.getSystemService(Context.
am.cancel(pIntent);
am.set(AlarmManager.RTC, System.currentTimeMillis(), pIntent);
        am.setRepeating(AlarmManager.RTC, startTime, 60000, pIntent);
Run Code Online (Sandbox Code Playgroud)

android

23
推荐指数
2
解决办法
1万
查看次数

应用程序被Android或任务杀手杀死后,如何保存预定的警报?

安排警报的代码.

    PendingIntent sender = PendingIntent.getBroadcast(this, id, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
    am.set(AlarmManager.RTC_WAKEUP, time, sender);
Run Code Online (Sandbox Code Playgroud)

它的工作正常,但当我在任务杀手中杀死我的应用程序时,我丢失了我的预定警报.如何解决这个问题呢?

android alarmmanager

22
推荐指数
2
解决办法
1万
查看次数

使用xamarin表单中的警报管理器为android安排通知

  • 我创建了一个依赖关系来显示通知

  • 在My DeviceDetails_Droid.cs中,我将设置闹钟设置为30秒

  • 当应用程序处于活动状态时,本地通知功能可以正常工作,但是当我杀死应用程序(关闭应用程序)时,警报接收器未被调用.


public void ShowNotification(string message, string title)
{

Intent alarmIntent = new Intent(Forms.Context, typeof(AlarmReceiver));
alarmIntent.PutExtra ("message", message);
alarmIntent.PutExtra ("title", title);

    PendingIntent pendingIntent = PendingIntent.GetBroadcast(Forms.Context, 0, alarmIntent, PendingIntentFlags.UpdateCurrent);
    AlarmManager alarmManager = (AlarmManager) Forms.Context.GetSystemService(Context.AlarmService);

    //TODO: For demo set after 5 seconds.
    alarmManager.Set(AlarmType.RtcWakeup, DateTime.Now.Millisecond + 30000, pendingIntent);
}
Run Code Online (Sandbox Code Playgroud)
  • 在Androids MainActivity中

[BroadcastReceiver]
public class AlarmReceiver : BroadcastReceiver
{
    public override void OnReceive (Context context, Intent intent)
    {

        var message = intent.GetStringExtra ("message");
        var title = intent.GetStringExtra ("title");

        var notIntent = new …
Run Code Online (Sandbox Code Playgroud)

android local xamarin.android xamarin

9
推荐指数
2
解决办法
6533
查看次数