2013-08-17 2 views
1

Я хотел бы сделать определенные, простые действия каждый раз, когда мое приложение закрывается - я просто хочу уменьшить переменную int. Как это сделать?Выполняйте определенные действия каждый раз, когда приложение закрывается

+0

Закрыв, вы имеете в виду идти в фоновом режиме или когда она является силой бросить курить? –

ответ

2

Как @Ozair правильно спросил, что это зависит от того, что вы определяете как closing of app.

Вы можете сделать одно или оба из следующих действий в зависимости от необходимости:

  1. Если вы хотите, чтобы обнаружить закрытие приложения при помощи кнопки Назад, а затем из вашей последней активности, вы можете обнаружить нажатие кнопки BACK путем переопределения функции onBackPressed. Там вы можете уменьшить свою ценность.

  2. Если вы также рассматриваете ситуацию, когда приложение переходит в фоновое изображение, нажав кнопку HOME, тогда в ваших действиях вам нужно будет обнаружить кнопку HOME. Там было много решений, которые больше не работают для обнаружения кнопки HOME, но this Ответ на вопрос How can I detect user pressing HOME key in my activity?, похоже, работает на меня. Итак, вы можете обнаружить кнопку HOME и уменьшить значение, которое вы можете сохранить в SharedPreferece.

Могут быть другие случаи, когда вы звоните finish() и закрываете последнее действие. Из вашего вопроса неясно, рассматриваете ли вы этот случай.

Надеюсь, это даст вам некоторую возможность подумать об этом.

+0

Я бы определил приложение закрытия как убийство его процесса. Моя цель - загружать файл каждый раз, когда приложение запускается - в моем случае у него нет смысла загружать большой файл, когда приложение неактивно. –

+1

Снова убивая, вы имеете в виду «Force Stop» или убиваете ОС? Или вы просто имеете в виду, что приложение закрывается пользователем. –

+0

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

1

Вопрос в том, что вы имеете в виду «близко»?
Если вы закроете все свои действия, процесс App-процесс все еще может работать. Если вы имеете в виду, что «close» просто закрывает все ваши действия. Вы можете определить «счет» для всех операций открытия, вы можете сохранить их в DB или SharePerference. Я думаю, что вы можете сделать, следовать (фиктивные коды):
В Вашем проекте Вы должны определить BasicActivity:

public class BasicActivity extends Activity { 
    onCreate() { 
     mPreference.incActivityCount();//++ 
     super.onCreate(); 
    } 

    onDestory() { 
     mPreference.decActivityCount();//-- 
     if(mPreference.getActivity() == 0) { 
      //All being opened Activities have been closed. 
      onAppHasNoUIs(); 
     } 
     super.onDestory(); 
    } 

    onAppHasNoUIs() { 
      //All being opened Activities have been closed. 
    } 
} 
Смежные вопросы