2013-11-04 161 views
1

我用登录/注销逻辑编写了一个应用程序。 登录后(将用户设置为pass并将其作为变量),用户可以最小化应用程序。最小化应用程序android

最小化代码:

Intent startMain = new Intent(Intent.ACTION_MAIN); 
     startMain.addCategory(Intent.CATEGORY_HOME); 
     startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     startActivity(startMain); 

当用户单击第一个活动的应用程序图标我检查时已经设置的用户,并通过为增值经销商,如果他们的应用程序去活动2(下一个活动)。如果没有设置,则进入登录界面。

一切工作正常,但有时应用忘记了用户和减少通过后,我进入登录界面....

是像清除缓存我不知道...帮助

回答

0

您应该使用sharedPreferance来存储登录用户和密码。下面 是代码

private void storeUserPreferences(String key, String value) { 
     SharedPreferences sharedPreferences = PreferenceManager 
       .getDefaultSharedPreferences(this); 
     Editor editor = sharedPreferences.edit(); 
     editor.putString("username", "xyz"); 
       editor.putString("pass", "123"); 
     editor.commit(); 
    } 


private void loadUserPreferences() { 
      SharedPreferences sharedPreferences = PreferenceManager 
        .getDefaultSharedPreferences(this); 
      String pass =sharedPreferences.getString("pass",""); 
      String username=sharedPreferences.getString("username",""); 
      if(!TextUtils.isEmpty(pass)&&!TextUtils.isEmpty(username)) 
      { 
       login.....success 
      } 
      else 
      { 
        redirect to login screen 
       } 



     } 

这是参考文档http://developer.android.com/reference/android/content/SharedPreferences.html

+0

我不确定你想把它放在共享偏好设置中。如果它存储的凭证是用于其他系统(例如,如果您的应用使用Facebook,则可以将Facebook详细信息存储在共享首选项中),这将是正确的解决方案。但是,如果目的是用密码来保护你的应用程序,那么用户在启动它时就必须输入密码(但不是在他们将其最小化时),那么这不是实现它的方法。 – CompuChip

1

在Android中,您不能假定应用程序在进入后台时将保留在内存中,并且您不能假定它保留在前台(人们可能按Home键或弹出窗口可能会出现)。您应该执行和onResume事件并将登录用户的详细信息存储在那里。这些方法可以保证在你的应用程序进入后台并分别被重新激活时被Android调用。您可以使用您在这些方法中获得的SavedBundle对象来存储数据。此外,请阅读以下应用生命周期:http://developer.android.com/reference/android/app/Activity.html

+0

SavedBundle是保持屏幕旋转之间数据有用的,但我认为OP将不得不一些其他的方式存储数据在这种情况下,例如通过'SharedPreferences'或SQLite。 – Piovezan

+0

谢谢@Piovezan,我想我对这个问题并不完全清楚 - 另见我对Hardik的帖子的评论。 – CompuChip

+0

当我设置用户并通过我桅杆放置活动OnPause后嗯? – user1309635

相关问题