2014-12-02 2 views
0

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

Чтобы повысить безопасность моего приложения, я добавил таймер, поэтому, если пользователь находится в состоянии бездействия, приложение закроется. Теперь я хотел бы закрыть приложение каждый раз, когда пользователь хочет его свести к минимуму (нажав кнопку «HOME» и кнопку «RECENT APPS»).

Я пробовал onStop() и onPause(), но ничего не работает, потому что каждое действие в моем приложении, когда оно заменяется другим, перемещается по указанным состояниям. Поскольку я не могу использовать Keycode == Keycode.HOME, как я мог это сделать?

+0

Почему вы не можете использовать переопределить функцию onKeyPressed? – busylee

+0

Как я читал, я просто не могу переопределить кнопку дома. Android не позволяет мне это делать. – Razvi

+0

Да, ты прав, моя ошибка. Можно ли заблокировать ваше приложение в onPause и разблокировать onResume с помощью любого пароля, введенного пользователем mb? – busylee

ответ

1

Я предлагаю, чтобы все ваши действия отслеживали их состояние в onResume() и onPause(): они могут увеличивать некоторую статическую переменную приложения, подсчитывая, сколько из ваших действий видимо. Когда этот счетчик достигнет нуля, это означает, что ни одна из ваших действий не видна, и вы можете выполнить очистку.

Решение, предложенное @Don Chakkappan, недостаточно хорошее, я думаю, так как ваша деятельность может быть объявлена ​​активной, даже если она больше не видна.

+0

Это очень хорошая идея. Я попробую. И да, это моя проблема, активность делает onStop()/onPause(), когда я просто перехожу от одного к другому. – Razvi

+0

Я на самом деле добавил VARIABLE ++; on onResume(); и ВАРИАБЕЛЬНЫЙ; on onStop(); и если происходит VARIABLE == 0 finishAffinity(). Все работает отлично. Если пользователь нажимает кнопку HOME или кнопку RECENT APPS, приложение закрывается. Большое вам спасибо :) – Razvi

+0

приветствую :-) – muslidrikk

0

Постоянно проверять активность в течение земли от службы

  ActivityManager am = (ActivityManager) this .getSystemService(ACTIVITY_SERVICE); 
      List<RunningTaskInfo> taskInfo = am.getRunningTasks(1); 
      @SuppressWarnings("unused") 
      ComponentName componentInfo = taskInfo.get(0).topActivity; 
      Log.d(TRCU.LOG_TAG, "CURRENT Activity ::" + taskInfo.get(0).topActivity.getClassName()); 
      String currentActivity=taskInfo.get(0).topActivity.getClassName(); 

Тогда вы можете закончить() или остановить службу в соответствии с контекстом

0

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

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