2015-08-27 8 views
0

У меня есть 2 действия, 4-значный логический интерфейс входа в систему (MainActivity) и активность.Перезапустить приложение при каждом запуске?

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

Я попытался объединиться в onStop() и onResume-методах активности контента, но они кажутся крайне ненадежными, поскольку иногда, когда у меня есть настройка onRestart для возобновления активности входа, она вообще не запускает ее , и вызов экрана входа, который будет активирован в onStop(), не позволит мне завершить задачи в фоновом режиме, например, сохранить данные.

Есть ли что-нибудь, что я могу добавить в файл манифеста, который сообщит приложению о перезагрузке из активности входа независимо от того, что? Одна из худших вещей, которые могут возникнуть при работе с таким приложением, заключается в том, что информация доступна для кого-то, кроме владельца, который не был вынужден войти в систему.

+0

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

+0

i Вероятно, нужно просто установить метод onStop, чтобы каждый раз вытягивать logincreen, только проблема заключается в том, что из-за моей активности содержимого пользователь может загружать большое количество изображений в приложение, которое будет храниться в приложении внутреннее хранилище через AsyncTask, и если метод onStop сообщает приложению перейти на loginscreen, то если пользователь останавливает активность во время процесса загрузки, тогда может быть выброшено множество данных, которые приложение отслеживает во время процесса вне формы. –

+0

Я не думаю, что вам нужно onStop() для достижения вашей цели. Я думаю, вам нужно переопределить только функции onResume() и onRestart(). – iTurki

ответ

1

Вам нужно сосредоточиться на двух вызовах в ваш Content активность:

  • onPause(): Это где вы убиваете Содержание деятельности и удалить его из стека. Вы можете сделать это легко:

    @Override 
    public void onPause() { 
        super.onPause(); 
        //Save your data here 
    
        finish(); //Kill Contect Activity. 
    } 
    
  • onRestart(): Здесь вы перенаправить пользователя к основному виду деятельности.

    @Override 
    public void onRestart() { 
        super.onRestart(); 
        Intent i = new Intent(this, MainActivity.class); 
        startActivity(i); 
        finish(); //Kill Contect Activity. 
    } 
    

This graph может помочь вам в понимании жизненного цикла активность:

enter image description here

+0

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

+0

@ ZacharyWathen Вы абсолютно правы! Я не обращал на это внимания. Итак, попробуйте переместить код 'onResume()' в 'onRestart()'. Думаю, это должно сработать.Я отредактировал ответ. – iTurki

+0

по какой-то причине onRestart не всегда вызывается с этим приложением. Было несколько случаев, когда я вошел в систему, нажал кнопку «Домой», а затем вернулся в приложение позже, чтобы возобновить работу, где я остановился, вместо приложения, требующего экрана входа в систему. Что я сделал, добавлена ​​логическая переменная, которая установлена ​​только в true после загрузки содержимого. (После вызова onResume) называется isLoaded. В onResume я установил его только для запуска loginActivity, если isLoaded = true (что не происходит, когда onResume вызывается до настройки активности). –

0

Что вам нужно, это установка флага android:clearTaskOnLaunch и android:excludeFromRecents для вашей деятельности в манифесте.

+0

У меня уже был андроид: excludeFromRecents, добавленный к моим действиям, и я вернулся и добавил android: clearTaskOnLaunch к моим действиям, и это не привело ни к одному из данных моего приложения, а скорее к пустой деятельности с «hello world». Затем я попробовал его в теге приложения, но все равно не повезло. Я буду больше погружаться в это решение, если мне не удастся выработать вышеописанные решения. Благодаря! –

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

  • Нет связанных вопросов^_^