我正在開發一個與服務器交談並具有登錄屏幕的應用程序。我使用httpconnection與服務器通信(服務器發回Json響應)。我的登錄屏幕發送電子郵件和密碼,這是由服務器驗證 - 發送cookie,並期待與每個進一步的請求知道該用戶登錄的cookie。CookieManager在關閉應用程序時丟失了Cookie嗎?
我使用Cookiemanager和cookie處理程序來啓用會話該用戶只能登錄一次。
使用下面在我的主要活動2個命令(上創建方法)
CookieManager cookieManager = new CookieManager();
CookieHandler.setDefault(cookieManager);
工作模式是,我的主要活動將讀取命令發送至服務器,該服務器檢查用戶是否已登錄與否(預期cookie中帶有id),並在json中發送狀態。如果狀態爲0,則會移至登錄活動,否則會移至主屏幕。
在登錄活動中,我發送帶有用戶名和密碼的登錄命令,並且服務器通過json響應發送一個cookie(發送一個唯一的id,它將對任何進一步的請求進行交叉檢查以驗證用戶)。
登錄後,我移動到主屏幕並閱讀狀態,並且由於我在主活動中創建了CookieManager,它會自動向每個httprequest發送cookie。
問題是 - 當我退出應用程序並在登錄後回來..它再次從主要活動開始,轉到登錄屏幕而不是主屏幕。我無法弄清楚爲什麼會出現這種情況,以及如何讓我的用戶登錄一次,之後,即使他退出應用程序,它仍然保留cookie。
我認爲即使退出後,CookieManager仍會保留cookie。是否因爲我在創建方法中創建Cookie管理器對象,並且當應用程序退出並重新啓動時會再次創建新對象?或者我的假設是錯誤的。
感謝您的答覆!所以,默認情況下使用CookieManager,當應用程序關閉或死亡時,如果存儲在內存中,將無法檢索cookie? –
是的,當應用程序進程退出時,Cookie在存儲器Cookie存儲中使用時消失 – miensol