Служба переднего плана: куда мне следует поместить код, который я действительно хочу запустить?Android

Форум для тех, кто программирует под Android
Anonymous
Служба переднего плана: куда мне следует поместить код, который я действительно хочу запустить?

Сообщение Anonymous »

Недавно я узнал о службах переднего плана в Android и о том, как их использовать.
Часто в примерах используется что-то вроде этого:

Код: Выделить всё

class MyForegroundService : Service() {

...

override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
val notification = NotificationCompat.Builder(this, "my_foreground_service")
.setSmallIcon(R.drawable.ic_launcher_foreground)
.setContentTitle("This is a notification")
.setContentText("Hello").build()

startForeground(1, notification) //don't use id = 0!

return super.onStartCommand(intent, flags, startId)
}
...
}
Однако по какой-то причине часто не отображается, и мне интересно следующее:
Где мне поместить свой код, который на самом деле должен делать что-то в службе переднего плана?

Должен ли я...
  • вызвать его перед startForeground()?
  • вызвать его после startForeground()?
  • не помещать его сюда куда-либо, а вместо этого добавить .setContentIntent() в конструктор уведомлений с намерением, которое запускает код из другого класса?
Одной ситуацией, когда это действительно важно, является вибрация. На устройствах WearOS вибрация не возникает, пока приложение находится в фоновом режиме, если только она не происходит из службы переднего плана.
Я тестировал запуск кода как до, так и после startForeground(). Кажется, это работало лучше, если писать после startForeground(), хотя даже тогда это работало не каждый раз.

Подробнее здесь: https://stackoverflow.com/questions/797 ... ant-to-run

Вернуться в «Android»