2017-08-07 94 views
-1

我正在开发一个应用程序,您可以安排您的时间,它会像Google日历一样及时提醒您。我使用AlarmManager类,并设置一个重复任务来每隔一分钟检查一次数据库,并查看当时是否有任何警报。为什么使用闹钟管理器重复任务在android上不准确?

@Override 
public void onReceive(Context context, Intent intent) { 

    Calendar now = Calendar.getInstance(); 

    doRepeatingWorks(now.getTimeInMillis()); // Like Checking if one day passed to do some tasks 

    checkDbIfThereIsSomeSchedule(now); 
} 

而且我把这个启动报警经理:

public void setAlarm(Context context) { 
      AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
      Intent intent = new Intent(context, AlarmReceiver.class); 
      PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0); 
      alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), G.ALARM_CHECK_INTERVAL_MILIS, pendingIntent); 
} 

但它是不准确的,有时我想出这个任务杀手级应用杀死我报警,并使其完全没有价值。

虽然使用foregroundService会消耗电量,但它会随用户的通知而变得异常敏感。

是否有任何解决方案或替代方案来解决这个问题?

+0

请发布您的代码 –

+0

如果您只有一分钟的间隔时间然后使用'Handler' –

+0

@BipinGawand查看更新请 –

回答

2

我用AlarmManager类,并设置重复任务,检查数据库每隔一分钟,看看是否有对时间或任何警报不

这是一个真正糟糕的做法。这种行为正是为什么在Android 6.0中添加打盹模式和应用程序待机的原因。

是否有此问题的任何解决方案或替代方案?”

时间表第一事件报警事件。当你得到控制,通知用户有关事件,然后计划对报警事件如果用户添加比第一个事件更早的新事件,则取消先前的闹钟并为新的第一个事件安排一个闹钟。

+0

它是否会为任务致命问题进行任何更改?它更准确吗? –

+0

@Mohammad:在大多数设备上,不管你如何使用AlarmManager,无论你认为“任务杀手”对警报没有影响。在少数设备上,制造商已经发布了预装的“任务杀手”,这些设备写得很差,取消了警报,可能是作为完整的“强制停止”实施的一部分。对此你无能为力。 – CommonsWare

+0

是啊,像华硕标签。关于您的解决方案,1)为什么它更好,2)每次数据库更改时,是否可以清除所有警报并一起构建所有可用日程安排警报的列表? –