2012-05-28 6 views
1

Краткая версия: Android перезагружает телефон (буквально перезагружается), чтобы избавиться от услуг переднего плана? Если да, то в каких случаях?служба переднего плана вызывает перезагрузку телефона - почему?

Длинная версия: Я написал услугу GPS, которая регистрирует себя в качестве переднего плана службы (в данном случае это хорошая идея - когда я запускаю его, это самое главное, что на моем телефоне;)). Во время тестирования эта услуга является большим потребителем ресурсов - она ​​получает данные GPS каждую секунду и записывает в файл базы данных SQLite на SD-карте. Позже я буду использовать внутреннюю память и продлить время опроса, но сейчас мне нужны тестовые данные.

Служба работает по назначению. Я создал действие, которое начинается & останавливает его, и результаты выглядят отлично. Но когда я продолжал работать, телефон перезагрузился через некоторое время (полчаса или около того). Поскольку я никогда не замечал этого при нормальном использовании, я приписываю это своему сервису. Тем не менее, я не знаю, что вызывает это - я должен запросить wakelock для CPU? (если это проблема, не будет ли телефон просто выключен?) У меня закончилась нехватка памяти? Я использовал слишком много батареи? (он был наполовину заполнен) Есть ли журнал, где я могу проверить, почему телефон перезагрузился?

Окружающая среда: Xperia X10, Android 2.3.3.

+0

«действительно ли Android перезагружает телефон (буквально перезагружается), чтобы избавиться от услуг переднего плана?» - AFAIK, no. Я предполагаю, что вы отключите некоторые ошибки встроенного программного обеспечения на своем устройстве. – CommonsWare

+0

Я боялся этого, спасибо! Попытаться затем отладить дальше. Позаботьтесь об этом в ответ, чтобы я мог принять его? Btw, отличная книга («Занятые кодеры для разработчиков Android»)! :) – johndodo

+0

Сделано, и спасибо за добрые слова! – CommonsWare

ответ

2

AFAIK, no. Это было бы чрезмерно жестко для пользователя. Нет ничего о службе переднего плана, которая каким-то образом препятствует тому, чтобы ОС завершила свой процесс, как любой другой.

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

3

Как утверждают другие, Android не перезагружает телефон, чтобы избавиться от услуг переднего плана. Наиболее распространенные причины, с которыми я столкнулся являются:

  • Ядро паника из-за ошибки в драйверах или повреждение памяти и т.д.
  • Watchdog убивает основной поток из-за тупиковой ситуации и что вызывает Zygote перезапустить который почти как перезагрузка с точки зрения пользователя.

Без подробностей или журналов есть только предположение. Но похоже, что ваш Service потреблял много ресурсов, это могло вызвать Watchdog на SystemServer поток, который будет вызываться, и это приведет к перезагрузке.

0

Взятые из Android Документах

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

Смежные вопросы