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

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

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

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

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

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

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

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

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

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

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