2

我有一项服务startForeground(requestCode, notification);并进行了设置,setOngoing(true)以便用户无法删除通知。此通知的有效期为多长时间?它会永远活着(直到用户重新启动手机)?

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

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

使用带有 setOngoing(true) 的普通通知,然后启动一个服务,该服务将为单击的每个按钮调用一个方法会更好吗?

4

2 回答 2

1

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

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

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

我不知道使用普通通知是否更好,请先尝试 START_STICKY。

于 2014-05-07T08:57:45.787 回答
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);
}

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

于 2014-06-10T04:30:15.330 回答