通知可以保留多长时间(永久)?

时间:2014-04-24 13:34:30

标签: android android-lifecycle android-notification-bar android-background

我有startForeground(requestCode, notification);的服务,并将其设置为setOngoing(true),因此用户无法删除通知。这个通知有多长时间可以维持?它会永远存活(直到用户重启电话)吗?

我注意到,如果我启动该服务并让手机闲置几个小时,通知仍然存在,但对按钮点击服务方法没有响应。这是因为我没有部分唤醒锁吗?

此通知用于控制亮度设置等Android设置,这就是我需要始终运行通知的原因。

使用setOngoing(true)的正常通知,然后启动一个服务,为每个点击的按钮调用一个方法会更好吗?

2 个答案:

答案 0 :(得分:1)

在重新启动手机之前会保留通知,我从自己的经验中学习:)。

一段时间后,您的服务被系统杀死以获得更多内存,这就是通知无响应的原因。

如果您希望始终运行服务,最好从onStartCommand()返回START_STICKY。杀戮后它会自动重启。

我不知道更好地使用正常通知,请先尝试START_STICKY。

答案 1 :(得分:0)

似乎保持服务/通知运行的解决方案是使用重复警报:

public void startAlarm(){
    alarmMgr = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(this, NotificationService.class);
    alarmIntent = PendingIntent.getService(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    alarmMgr.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime(), 200*1000, alarmIntent);
}

我不确定重置闹钟的最佳频率,但我现在已将其设置为几分钟。每隔几分钟我的服务就会开始/恢复。