Intereting Posts
Firebase Analytics Непрерывное отслеживание кампании UTM Как центрировать drawableTop и текст по вертикали на кнопке в Android? Использование Green DAO с поставщиком контента В Android-браузере Android Google Chrome можно настроить безопасное обращение-небезопасное происхождение как безопасное Режим блокировки DrawerLayout не работает должным образом «Произошла внутренняя ошибка» с интеграцией входа в Google Plus Невозможно выполнить dex: несколько файлов dex определяют Lcom / google / android / gcm / GCMBaseIntentService; Сброс активности Android после сделанного снимка (ориентация?) Как интегрировать шаги Samsung Gear в приложение Android? Ошибка: не удалось найти цель с хэш-строкой 'android-14' в: Открыть Android SDK Manager Android не смог разрешить все зависимости для конфигурации 'classpath' Какова цель методов getItem и getItemId в базовом адаптере Android? Установите фокусировку камеры на контролируемое фиксированное расстояние на Android Элементы Listview удаляют растровые изображения из памяти, когда пользователь прокручивает Перемещать текстовое представление только при открытии виртуальной клавиатуры на Android

Потребление резьбы и аккумулятора

Я работаю над приложением, которое проверяет статус телефона каждые 5 секунд. Я сделал это так:

Thread checking = new Thread() { public void run(){ while( <<some status>> ) { <<checkstatus and do something>> Thread.sleep(5000); } } } 

Это плохо для аккумулятора? Как я могу это сделать по-другому? Служба перестает работать через пару секунд.

Solutions Collecting From Web of "Потребление резьбы и аккумулятора"

Чтобы ответить на ваш вопрос, это зависит от того, что вы делаете внутри цикла while.

Если вы не используете и не просыпаете какие-либо «дорогие» компоненты (например, интернет, Bluetooth, другие датчики и экран), вы должны быть в порядке. По сути, это то, как ОС работает в фоновом режиме в любом случае и использует Thread – один из самых дешевых способов.

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

Ваш сервис должен работать нормально, если вы это сделаете правильно.

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

Thread.sleep () заставляет текущий поток приостанавливаться, что означает, что процессор будет доступен для других потоков или просто отключится. Также обратите внимание на контекстный переключатель сна, но вы находитесь на безопасной стороне с большим интервалом ожидания. Итак, вообще говоря, все зависит от вас.

Вы можете использовать, например, PowerTutor, чтобы убедиться, что ваше приложение правильно спроектировано и реализовано.