обслуживание переднего плана вызывает перезагрузку телефона - почему?

1

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

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

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

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

  • 0
    "Android перезагружает телефон (буквально перезагружается), чтобы избавиться от услуг переднего плана?" - AFAIK, нет. Я предполагаю, что вы перепутали какую-то ошибку прошивки на вашем устройстве.
  • 0
    Я боялся этого, спасибо! Попробую потом отладить дальше. Хотите опубликовать это как ответ, чтобы я мог принять это? Кстати, отличная книга ("Руководство занятых программистов по разработке Android")! :)
Показать ещё 2 комментария
Теги:
service
reboot

3 ответа

2
Лучший ответ

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

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

3

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

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

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

0

Взятые из Android-документов:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню