LINUX.ORG.RU

Показывать постоянное уведомления во время работы приложения

 


0

1

Сразу скажу, что в разработке для Android и в Java (хотя пишу на Kotlin, но в данном случае это не важно) я новичок.

Пишу приложение, которому нужно работать в фоне. Чтобы понизить вероятность убиения процесса пока оно свернуто, запускаю сервис и выключаю его при убирании приложения из списка недавних (с помощью вызова stopSelf в onTaskRemoved). Я хочу, чтобы во время его работы показывалось постоянное уведомление. Проблема в том, что если показывать его в onStartCommand и убирать в onDestroy, то при убивании процесса оно остается висеть, т.к. onDestroy в этом случае не вызывается. Это можно решить с помощью startForeground, но в документации сказано, что его следует использовать только если остановка сервиса помешает пользователю (например, если он играет музыку), но это не мой случай. Что посоветуете?

★★

Я посоветую подумать, действительно ли нужно постоянно показывать уведомление и, если нужно, использовать startForeground. Суть как раз в том, чтобы не показывать пользователю уведомлений, если они не говорят о важных для его занятий вещах. Разместив уведомление любым другим способом вы всё равно нарушите гайдлайны гугла, так что лучше сделайте это без хитрых трюков.

Weres ★★★
()
Ответ на: комментарий от Weres

Я пишу клиент удаленного управления для transmission-daemon. В уведомлении будет показываться скорость загрузки/отдачи и другая информация.

equeim ★★
() автор топика
Ответ на: комментарий от equeim

Дело хорошее. Если вам кажется, что показывать стоит — показывайте, я же не говорю, что не надо, я говорю, что трюки не нужны. В идеале, показывайте, но сделайте пункт в настройках для отключения уведомления. В основном так и сделано в схожих приложениях.

Weres ★★★
()
Ответ на: комментарий от Weres

Да, я так и планировал. Спасибо.

equeim ★★
() автор топика
Ответ на: комментарий от droserasprout

Смотрел, он делает startForeground. Мне это не нравится тем, что заставляет андроид держать сервис в памяти при любых обстоятельствах. Для торрент-клиента это нужно, т.к. он что-то качает, но в моем случае никакого вреда пользователю от внезапной остановки сервиса не будет. Но других вариантов, похоже, нет. Сделаю постоянное уведомление опциональным.

Как же мне выносит мозг эта особенность андроида, когда разные части программы могут отключиться в любой момент, и я над этим никакого контроля не имею.

equeim ★★
() автор топика
Ответ на: комментарий от equeim

Точняк, у тебя ж только морда. Ну тогда галка в настройках действительно будет лучшим решением.

Особенность раздражающая, да. Только ближе к трём гигабайтам оперативки перестаёшь регулярно возгораться в стиле «аааааа браузер выгрузился вместе с заполненной формой».

droserasprout ★★
()
Последнее исправление: droserasprout (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.