2

私はサービスを持っており、ユーザーが通知を削除できないようstartForeground(requestCode, notification);に設定しています。setOngoing(true)この通知はどのくらいの期間存続しますか? 永久に(ユーザーが電話を再起動するまで)生き続けますか?

サービスを開始して電話を数時間アイドル状態にすると、通知はまだ存在するが、ボタン クリック サービス メソッドに応答しなくなることに気付きました。これは、部分的な wake lock を持っていないためですか?

この通知は、輝度設定などの 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 に答える