Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何保持登录状态跳过启动程序活动?_Android - Fatal编程技术网

Android 如何保持登录状态跳过启动程序活动?

Android 如何保持登录状态跳过启动程序活动?,android,Android,我有一个索引活动,有用户名和密码的编辑文本和一个登录按钮。当用户单击login按钮时,将执行一个异步类(将通过服务器调用完成身份验证)。如果成功通过身份验证,homeActivity将使用intent启动 在宣言中,我将indexActivity设置为我的启动器活动 我想始终保持登录状态,我的意思是登录后,当用户按下后退按钮时,应用程序将最小化,当它再次启动时,可能应该转到homeActivity 我听说了SharedReference,但我不知道如何在我的案例中使用它。我是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中需要的。那么我能做些什么?”我的回答用引号反映了您的问题