Android 如何保持登录状态跳过启动程序活动?
我有一个索引活动,有用户名和密码的编辑文本和一个登录按钮。当用户单击login按钮时,将执行一个异步类(将通过服务器调用完成身份验证)。如果成功通过身份验证,homeActivity将使用intent启动 在宣言中,我将indexActivity设置为我的启动器活动 我想始终保持登录状态,我的意思是登录后,当用户按下后退按钮时,应用程序将最小化,当它再次启动时,可能应该转到homeActivity 我听说了SharedReference,但我不知道如何在我的案例中使用它。我是android的新手,我对这个条件有疑问。所以请提供正确的方法来实现我的要求Android 如何保持登录状态跳过启动程序活动?,android,Android,我有一个索引活动,有用户名和密码的编辑文本和一个登录按钮。当用户单击login按钮时,将执行一个异步类(将通过服务器调用完成身份验证)。如果成功通过身份验证,homeActivity将使用intent启动 在宣言中,我将indexActivity设置为我的启动器活动 我想始终保持登录状态,我的意思是登录后,当用户按下后退按钮时,应用程序将最小化,当它再次启动时,可能应该转到homeActivity 我听说了SharedReference,但我不知道如何在我的案例中使用它。我是android的新手
还有一个疑问是,从身份验证结果来看,我传递了一些有目的的对象,这些对象是homeActivity中需要的。那我能做什么呢
提前感谢正如您所说,您应该使用SharedReferences,类似这样的内容
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
Editor editor = prefs.edit();
editor.put("login_data", the_api_token);
editor.commit();
这是用来保存开放会话的。现在,当像这样的onCreate方法上的indexActivity启动时,您应该检查这个参数
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
if (prefs.getString("login_data", null) != null ) {
// Start next activity
}
最好在清单中为indexActivity设置android:noHistory=“true”
选项,这样当用户单击“后退”按钮时,它就不会返回indexActivity,它将退出主屏幕
编辑下一个疑问
每个未实现Parcelable的自定义对象都无法通过意图传递,因此,如果您需要在其他活动中获取一些对象,并且您计划通过意图来实现,那么您应该实现它
这里有一个关于如何做的小指南
希望有帮助:)哦,我会详细解释你制作一个session类,在这篇文章中,我们为SharedReference编写了如下代码
public class Session {
private SharedPreferences prefs;
public Session(Context cntx) {
// TODO Auto-generated constructor stub
prefs = PreferenceManager.getDefaultSharedPreferences(cntx);
}
public void setIslogin(boolean Islogin) {
prefs.edit().putBoolean("Islogin", Islogin).commit();
prefsCommit();
}
public boolean getIslogin() {
boolean Islogin = prefs.getBoolean("Islogin", false);
return Islogin;
}
}
now when u first time login successfully then just call `session.setIslogin(true);`
Session session = new Session(this);
boolean TimeToLoad = session.getIslogin();
if(TimeToLoad)
{
Intent i = new Intent(this, AFTER_LOGIN_CLASS_NAME.class);
startActivityForResult(i, 1);
}
然后在闪屏中,只需像这样提及或检查
public class Session {
private SharedPreferences prefs;
public Session(Context cntx) {
// TODO Auto-generated constructor stub
prefs = PreferenceManager.getDefaultSharedPreferences(cntx);
}
public void setIslogin(boolean Islogin) {
prefs.edit().putBoolean("Islogin", Islogin).commit();
prefsCommit();
}
public boolean getIslogin() {
boolean Islogin = prefs.getBoolean("Islogin", false);
return Islogin;
}
}
now when u first time login successfully then just call `session.setIslogin(true);`
Session session = new Session(this);
boolean TimeToLoad = session.getIslogin();
if(TimeToLoad)
{
Intent i = new Intent(this, AFTER_LOGIN_CLASS_NAME.class);
startActivityForResult(i, 1);
}
我认为这将有助于你:)祝你好运你可以研究发送和接收活动中发送和接收值的
intent.putExtra(“key”,“value”)
和intent.getExtra(“key”,“value”)
方法
这是一个android功能,你的应用程序将从你最小化的相同活动中打开。您不必为此编写任何代码。
但是,如果你的应用程序长时间处于最小化状态,Android本身将杀死你的应用程序。请重新表述你的问题。@user3017713你解决了吗?是的。。。感谢您的贡献。感谢您的回复,但我认为这并不是我所问的“还有一个疑问是,从身份验证结果来看,我传递了一些有目的的对象,这些对象是homeActivity中需要的。那么我能做些什么?”我的回答用引号反映了您的问题