Прошу помощи, т.к. не могу разобраться с "падением" программы для Андроида.
Программа стабильно (сутками) работает на моем телефоне (android 2.1), однако у заказчика (android 2.2 и 2.3) на телефонах с большей производительностью стабильно через час — полтора работы закрывается и пропадает из процессов. Никаких сообщений не выдается. Все возможные блоки обернуты конструкциями try catch, выводящими диагностические сообщения.
Программа работает с GPS и GPRS, написана на Java.
Возможно ли, что андроид сам закрывает программы по неким правилам? Может подскажете пути диагностики и исправления проблемы.
Re: [Android] Программа завершается по непонятным причинам
Android может сам закрывать Activities, когда не хватает памяти. В этом случае можно сделать что-то перед выходом можно в onDestroy. Если дело в этом, то можно попробовать перенести функциональность в Service. Их закрывают позже. Системный лог ничего интересного не пишет? Попробуйте написать что-нибудь в лог в onDestroy.
Владимир.
Владимир
Re[2]: [Android] Программа завершается по непонятным причина
Здравствуйте, Vladimir_B, Вы писали:
V_B>Android может сам закрывать Activities, когда не хватает памяти. В этом случае можно сделать что-то перед выходом можно в onDestroy. Если дело в этом, то можно попробовать перенести функциональность в Service. Их закрывают позже. Системный лог ничего интересного не пишет? Попробуйте написать что-нибудь в лог в onDestroy.
А можно ли в onDestroy узнать причину закрытия приложения?
Можно ли заставить систему убивать данное приложение в последнюю очередь?
Программа все время висит в памяти (окно неактивно), слушает GPS. Вполне возможно, что система считает ее кандидатом на очистку.
Re[3]: [Android] Программа завершается по непонятным причина
Здравствуйте, AntonAD, Вы писали:
AAD>Здравствуйте, Vladimir_B, Вы писали:
V_B>>Android может сам закрывать Activities, когда не хватает памяти. В этом случае можно сделать что-то перед выходом можно в onDestroy. Если дело в этом, то можно попробовать перенести функциональность в Service. Их закрывают позже. Системный лог ничего интересного не пишет? Попробуйте написать что-нибудь в лог в onDestroy.
AAD>А можно ли в onDestroy узнать причину закрытия приложения? AAD>Можно ли заставить систему убивать данное приложение в последнюю очередь? AAD>Программа все время висит в памяти (окно неактивно), слушает GPS. Вполне возможно, что система считает ее кандидатом на очистку.
А рост потребления памяти есть со временем? Не обязательно вашего приложения, возможно других.
А то дейвительно похоже что приложение прибивается.
Попробуйте onLowMemory перехватывать и логировать.
Здравствуйте, Vladimir_B, Вы писали:
V_B>Здравствуйте, AntonAD:
V_B>Android может сам закрывать Activities, когда не хватает памяти. В этом случае можно сделать что-то перед выходом можно в onDestroy.
На всякий случай — в отличии от Service, для активити не обязательно будет вызван onDestroy
--
Спасибо
Re[3]: [Android] Программа завершается по непонятным причина
От:
Аноним
Дата:
17.02.12 10:18
Оценка:
Здравствуйте, AntonAD, Вы писали:
AAD>Здравствуйте, Vladimir_B, Вы писали:
V_B>>Android может сам закрывать Activities, когда не хватает памяти. В этом случае можно сделать что-то перед выходом можно в onDestroy. Если дело в этом, то можно попробовать перенести функциональность в Service. Их закрывают позже. Системный лог ничего интересного не пишет? Попробуйте написать что-нибудь в лог в onDestroy.
AAD>А можно ли в onDestroy узнать причину закрытия приложения?
В данном случае причина одна — нет ни одной причины чтобы приложение оставалось в памяти.
Из Dev Guide
Stopped
The activity is completely obscured by another activity (the activity is now in the "background"). A stopped activity is also still alive (the Activity object is retained in memory, it maintains all state and member information, but is not attached to the window manager). However, it is no longer visible to the user and it can be killed by the system when memory is needed elsewhere.
If an activity is paused or stopped, the system can drop it from memory either by asking it to finish (calling its finish() method), or simply killing its process.
AAD>Можно ли заставить систему убивать данное приложение в последнюю очередь?
The Android system will force-stop a service only when memory is low and it must recover system resources for the activity that has user focus. If the service is bound to an activity that has user focus, then it's less likely to be killed, and if the service is declared to run in the foreground (discussed later), then it will almost never be killed.