2012-04-23 4 views
0

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

Intent i = new Intent(Intent.ACTION_MAIN); 
i.addCategory(Intent.CATEGORY_HOME); 
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); 
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(i); 
finish(); 

с этим кодом это происходит:

дома-> Войти деятельность (основной пусковой деятельности) [uername и пароль поля являются пустыми ] -> при нажатии на logout-> home , а затем, когда я это делаю:

из дома-> приложение для запуска (на экране входа в систему имя пользователя и пароль все еще присутствуют) -> перейдите на главную, нажав кнопку возврата - > снова запустить приложение-> имя пользователя и пароль

Что было бы лучшим способом написать функцию выхода из системы?

+0

я сейчас делаю, что, установив редактирования текст как null в функции onResume() основного действия. Прекрасно работает, но любые другие решения приветствуются! :) – Ash

ответ

0

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

Если пользователь непосредственно выходит из приложения без выхода из системы, проверьте, существует ли имя пользователя и пароль, вы можете показать их в edittext.

сохранить в базе данных

SharedPreferences settings = getSharedPreferences("DB_NAME", 0); 
    SharedPreferences.Editor editor = settings.edit(); 
    editor.putString("user", username); 
    editor.putString("pass", password); 
    editor.commit(); 

очистить из базы данных

SharedPreferences settings = getSharedPreferences("DB_NAME", 0); 
    SharedPreferences.Editor editor = settings.edit(); 
    editor.remove("user"); 
    editor.remove("pass"); 
    editor.clear(); 
    editor.commit(); 
+0

Я хочу сделать это, потому что я уже сохранил много информации, связанной с пользователями в общих предпочтениях. в любом случае спасибо за ваш ответ! :) – Ash

0

переопределять класс приложений и создать открытое поле (или частное с геттер/сеттер).

В классе приложения:

public boolean loginDialogShown = false; 

В диалоговом Войти код:

MyApplication.loginDialogShown = true; 

В acivity:

if (!MyApplication.loginDialogShown){ loginDialog.show(); } 

http://www.devahead.com/blog/2011/06/extending-the-android-application-class-and-dealing-with-singleton/