Я ничего не изменил в своем коде, и внезапно мой IntentService (запущенный как ForegroundService) вообще не генерирует никаких уведомлений. Он все еще работает, но я не получаю никаких уведомлений.
Я попытался изменить идентификатор канала, посмотрел приложение, если Android блокирует уведомления, но ничего не изменилось с прошлого раза.
Из моего фрагмента, где я запускаю Службу:
public void startRefresh() {
Intent fetchIntent = new Intent(getActivity(), FetchService.class);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
getActivity().startForegroundService(fetchIntent);
} else {
getActivity().startService(fetchIntent);
}
}
Сам сервис:
public class FetchService extends IntentService {
public static final String notificationChannelId = "DEFAULT_CHANNEL";
public FetchService() {
super("FetchService");
}
@Override
public void onCreate() {
super.onCreate();
createNotificationChannel();
startForeground(1, getProgressNotification("fetching started"));
}
@Override
protected void onHandleIntent(@Nullable Intent intent) {
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
stopForeground(true);
stopSelf();
}
private Notification getProgressNotification(String text) {
return new NotificationCompat.Builder(this, notificationChannelId)
.setSmallIcon(R.drawable.ic_round_refresh_24px_blk)
.setContentTitle(getString(R.string.fetching_new_data))
.setContentText(text)
.setPriority(NotificationCompat.PRIORITY_LOW)
.setProgress(0, 0, true).build();
}
private void createNotificationChannel() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
CharSequence name = getString(R.string.channel_name);
String description = getString(R.string.channel_description);
int importance = NotificationManager.IMPORTANCE_LOW;
NotificationChannel channel = new NotificationChannel(FetchService.notificationChannelId, name, importance);
channel.setDescription(description)
NotificationManager notificationManager = getSystemService(NotificationManager.class);
notificationManager.createNotificationChannel(channel);
}
}
}
Я ожидаю, что служба переднего плана показывает уведомление, как обычно. В этот момент служба работает (вызывается onHandleIntent ()) и корректно останавливается. Вместо этого уведомление вообще не отображается.
EDIT:
Поэтому после переустановки приложения оно снова работает ... Странно, но я надеюсь, что оно будет работать непрерывно