当前位置: 首页 > 知识库问答 >
问题:

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

饶曦之
2023-03-14

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

我使用Cookiemanager和cookie处理程序来启用会话,这样用户只需登录一次。

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

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

工作模式是,我的主活动向服务器发送一个读命令,服务器检查用户是否已经登录(希望里面有id的cookie),并在json中发送状态。如果状态为0,它将转到登录活动,否则转到主屏幕。

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

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

问题是——当我退出应用程序并在登录后返回时。。它再次从主活动开始,进入登录屏幕,而不是主屏幕。我不知道为什么会这样,以及如何让我的用户登录一次,之后即使他退出应用程序,它也会保留cookie。

我还以为CookieManager会在你离开后继续做饼干呢。是因为我在on create方法中创建cookie Manager对象,当应用程序退出并重新启动时,它会再次创建新对象吗?或者我的假设是错误的。

共有2个答案

骆文华
2023-03-14
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;
    }
弓晔
2023-03-14

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

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

至少有两个持久的java。网CookieStore实现:

  • 在使用HTTPUrlConnection时,如何持久保存cookie
  • 持续库克商店
 类似资料:
  • 我做了一个jsf应用程序。这个应用程序有一个包含开始、停止按钮的菜单。当按下开始时,应用程序开始从网站获取数据,并更新其数据库。应用程序还有更新过程的进度条。但是,这个过程需要很长时间才能完成。我希望当我关闭浏览器时,它应该继续更新数据库。此外,当我再次打开它时,我应该得到以前的状态。然而,这并没有发生。当我关闭浏览器时,应用程序也关闭了。我该怎么办? 谢谢。

  • 当应用程序完全关闭时,如何以编程方式发送通知? 示例:用户关闭应用程序,也在Android Taskmanager中,然后等待。应用程序应在X秒后或应用程序检查更新时发送通知。 我试图使用这些代码示例,但是: 应用程序关闭时推送通知-活动太多/无法工作 我如何让我的应用程序在关闭时发送通知很多信息,但我不知道如何处理 当android应用程序关闭时,如何发送本地通知?-很多信息,但我不知道如何处理

  • 对于JavaFX,通常是: 是否有方法检测TornadoFX视图关闭?

  • 我想在我的应用程序上安排每日通知。但问题是,当应用程序打开时,通知不会出现,只有当我退出应用程序时,通知才会出现。 注意:我是ios开发的初学者 我的职能:

  • 我有一个Spring web应用程序。当应用程序上下文启动时,我使用执行一些应用程序initalization,特别是从web服务加载数据。如果这个web服务不能到达,那么我的应用程序就不能做任何有用的事情,保持它运行也没有意义。是否有方法以编程方式关闭应用程序上下文? 我已经试着做了以下几点: 那么在这种情况下关闭应用程序的正确方法是什么呢?

  • 我可以通过firebase FCM打开活动,但这只适用于android