ForegroundService неожиданно не отправляет никаких уведомлений - PullRequest
0 голосов
/ 25 марта 2019

Я ничего не изменил в своем коде, и внезапно мой 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: Поэтому после переустановки приложения оно снова работает ... Странно, но я надеюсь, что оно будет работать непрерывно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...