Nano Hash - криптовалюты, майнинг, программирование

Проблема со службой Android в SDK ›= 26

Я создаю приложение, которое отправляет уведомления пользователю, даже когда приложение закрывается в процессе или в фоновом режиме. На самом деле в версиях Android с SDK >= 26 я использую сервисы переднего плана. Для отображения уведомлений у меня есть служба (DatasNotification), которая запускает asyncTask (HttpRequest) для выполнения http-запроса, а asynctask в конце условий запускает новую службу, которая показывает уведомление. Когда мое приложение переходит в фоновый режим, у меня появляется системное уведомление, в котором говорится: мое приложение разряжает батарею. В ходе анализа я понял, что это системное уведомление генерируется сервисом DatasNotification.

Это мой код DatasNotification:

@Override
public void onCreate() {
    super.onCreate();
    Fabric.with(this, new Crashlytics());
    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        startForeground(1, new Notification());
    }
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    new HttpRequest(getApplicationContext(), 0).execute();
    return START_STICKY;
}

Есть ли решение для запуска фоновой службы в sdk >= 26?


Ответы:


1

Это была специальная функция Oreo (API26-27) для отображения системного уведомления о том, что «[приложение] использует батарею», когда приложение запускало фоновые службы. Вы заметите, что вы не будете получать такое же предупреждение на устройствах. под управлением P (API28) или Android 10 (API 29), так как это предупреждение было полностью удалено/отключено. Я не думаю, что вы можете что-то изменить в своем приложении, чтобы это предупреждение не отображалось на устройствах Oreo, если вы не можете избавиться от ваши (фоновые) службы в целом.

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

  1. Разблокируйте свое устройство под управлением Android Oreo
  2. Проведите пальцем вниз по панели уведомлений, чтобы полностью отобразить уведомление об использовании батареи.
  3. Нажмите и удерживайте уведомление, пока оно не изменится и не отобразится переключатель.
  4. Нажмите на переключатель, убедившись, что он неактивен
  5. Выберите Готово, чтобы отключить уведомление об использовании батареи.

(источник< /а>)

05.11.2019
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..