繁体   English   中英

关闭应用程序时CookieManager会丢失cookie吗?

[英]Does CookieManager loses the cookie when you close the app?

我正在开发一个与服务器通信并具有登录屏幕的应用程序。 我正在使用httpconnection与服务器通信(服务器发回Json响应)。 我的登录屏幕发送电子邮件和密码,由服务器验证 - 它发送cookie并期望每次进一步请求的cookie都知道用户已登录。

我正在使用Cookiemanager和cookie处理程序来启用会话,以便用户只需登录一次。

在我的主活动中使用以下2个命令(在Create方法上)

CookieManager cookieManager = new CookieManager();
CookieHandler.setDefault(cookieManager);

工作模型是我的主要活动向服务器发送读取命令,该命令检查用户是否已经登录(期望内部带有id的cookie),并在json中发送状态。 如果status为0,则移至登录活动,否则移至主屏幕。

在登录活动中,我发送带有用户名和密码的登录命令,服务器发送一个cookie(发送一个唯一的id,它交叉检查任何进一步的请求以验证用户)返回json响应。

登录后,我移动到主屏幕并读取状态,因为我在主活动中创建了CookieManager,它会自动发送每个httprequest的cookie。

问题是 - 当我退出应用程序并在登录后返回..它再次以主要活动开始并进入登录屏幕而不是主屏幕。 我无法弄清楚为什么会这样,以及如何让我的用户登录一次,之后即使退出应用程序,它也会保留cookie。

我认为即使退出后CookieManager仍会保留cookie。 是因为我在创建方法中创建cookie管理器对象,当退出应用程序并重新启动它时,它会创建新对象吗? 或者我的假设是错误的。

默认情况下, new CookieManager()会将cookie存储在内存中

但是,您可以使用不同的构造函数来更改此行为: CookieManager(CookieStore store, CookiePolicy cookiePolicy)

至少有几个持久的java.net.CookieStore实现:

If I move the Cookiemanager to the application class, it's just get called once and solve this issue. 

public class application extends Application {
    private static Context context;
    @Override
    public void onCreate() {
        super.onCreate();
            CookieManager cookieManager = new CookieManager();
            CookieHandler.setDefault(cookieManager);
    }

    public static Context getContext() {
        return application.context;
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM