2010-08-18 6 views
1

Я работаю над приложением на основе Gps, которое работает постоянно в фоновом режиме. Но в экстремально низкой памяти (или когда я открываю много приложений) мое приложение убито системой Android.Как узнать, когда мое приложение собирается убить

Я хочу перезагрузить свое приложение, когда оно было убито системой android. Я хочу это сделать, но не получаю никакого решения. Любая помощь будет оценена.

Благодаря

+5

программы собираются убить? : -O Я никогда не покупаю этот гаджет! –

+2

lol +1 для вас и очень плохо выбранное название ...: D – Shouvik

ответ

0

Вы можете попробовать запуск нового экземпляра приложения, когда функция OnDestroy() вызывается. Например:

@Override 
public void onDestroy() { 
    Intent intent = new Intent(Thisclass.this, Thisclass.class); 
    Thisclass.this.startActivity(intent); 
    super.onDestroy(); 
} 
+2

плохая идея! это может создать бесконечный цикл! – WarrenFaith

+0

Что делать, если он действительно хочет закончить приложение! Для этого потребуется диспетчер задач! – Shouvik

+1

О да, это правда, извините! :) Этого можно избежать, установив логическое значение, когда пользователь хочет выйти и проверить это в этом методе и, возможно, обходить перезапуск. Услуги выглядят как лучшее решение, о чем упоминает WarrenFaith. – onik

2

Вы выполнили свою логику GPS внутри службы? Услуга является одной из последних вещей, которые будут убиты и в основном потому, что их нужно убить, чтобы освободить необходимую память.

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

+0

спасибо, я не сделал логику в своей деятельности. Все прекрасно. То, что я хочу знать, это «какой метод вызывается, когда ваше приложение убито». Я попробовал onLowMemory(), но в этом случае он не вызван. – user320676

+0

самый последний метод, который вызывается, когда ваше приложение будет остановлено, - 'onDestroy()' Я не уверен, что это все еще так, когда приложение диспетчера задач убивает ваше приложение. – WarrenFaith

+0

привет, я сделал это с помощью службы оповещения. Спасибо, что поделились своими мыслями. – user320676

1

Вы смотрели на это Activity Lifecycle блок-схемы? В случае, когда другим приложениям требуется память, onPause() - это последняя гарантированная вещь, которая происходит до того, как ваше приложение остановлено или убито. Таким образом, вам понадобится уведомление (как говорит @WarrenFaith) или другой механизм, который потенциально может оживить ваше приложение или, по крайней мере, вызвать пользователя, чтобы оживить его.

0

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

Хотя я не вижу, как это не будет цикл. То, как вы заканчиваете свое приложение, очень похоже на то, как андроид заканчивает ваше приложение! поэтому я уверен, что это будет бесконечно циклически, когда вы пытаетесь закончить приложение, ведя себя очень как вредоносное ПО!

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