Я хочу отменить все мои уведомления и сигналы тревоги, установленные в фоновом режиме, так как приложение удаляется при смахивании.Это действие не вызовет onDestroy()
внутри моего корня Activity
.
Я сделал фоновый сервис для вызова NotificationManager
и отменил все уведомления в фоновом режиме, если приложение было убито смахиванием.Это вызвало некоторые проблемы со службой в Android O и выше.Я обнаружил, что вы должны запустить свой сервис по-другому, но этот запуск сервиса приведет к сбою моего приложения с ошибкой: Reason: Context.startForegroundService() did not then call Service.startForeground()
У меня нет решения, как отменить все мои Alarms
в фоновом режиме,но эта фоновая служба очень важна для push-уведомлений с сервера позже в проекте. (offtopic)
Инициализация службы в моем Application
классе:
private fun initBackgroundService(){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
startForegroundService(Intent(this, AppService::class.java))
} else {
startService(Intent(this, AppService::class.java))
}
}
AppService
классе:
import android.app.NotificationManager
import android.app.Service
import android.content.Context
import android.content.Intent
import android.os.IBinder
class AppService: Service(){
override fun onBind(intent: Intent?): IBinder? {
return null
}
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
return START_STICKY
}
override fun onTaskRemoved(rootIntent: Intent?) {
super.onTaskRemoved(rootIntent)
val nManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
nManager.cancelAll()
stopSelf()
}
}