2010-03-21 24 views
1

我昨天發佈了一個問題,關於確定應用程序何時正在完成vs屏幕方向更改銷燬。感謝我收到的答案,我能夠通過屏幕方向更改來解決我的問題。但是,我仍然遇到了障礙。 這個應用程序我正在使用HttpClient登錄到網站。只要應用程序保留在內存中,HttpClient將保留登錄的Cookie。但是,一旦它被殺死,它將需要重新登錄。 我的問題:如何確定應用程序何時從內存中被殺死,以便我可以將布爾值設置爲false,告訴應用程序它已從內存中移除,因此下次啓動時它將讀取並確定是否必須再次登錄?或者是否可以序列化一個HttpClient並將其放入savedInstanceState包中?可以從客戶端提取cookie並將其放入savedInstanceState包中?也許我在這裏完全錯過了一些東西? 任何幫助或正確的方向點是非常感謝,因爲這一個讓我難住。謝謝!Android:確定什麼時候應用程序正在最終確定

回答

1

如何確定當應用程序被 正在從內存中喪生,所以我可以設置 一個布爾假,告訴它 已經從內存中刪除的應用程序,所以它開始 下一次它會讀取這個 並確定是否必須重新登錄?

恕我直言,這是錯誤的問題。

正確的問題是:「我怎麼知道cookie不見了?」

這是更接近真實的商業問題(「我怎麼知道,如果我不得不再次登錄?」),因此將覆蓋更多潛在的邊緣和角落情況下比假定一些系統事件是唯一的餅乾的來源消失。

此外,它更容易:您的HttpClient對象可以讓您訪問CookieStore,並且您可以遍歷這些cookie來查看您是否在那裏。無可否認,如果他們有更直接的方法來進行這樣的查找,那該多好。

因此,在您訪問Web應用程序之前,請檢查cookie是否存在,並在需要時彈出登錄對話框/活動/任何內容。

還是有可能的序列化HttpClient的 並放進了 savedInstanceState捆綁?

可以從 客戶提取餅乾,把那些在 savedInstanceState捆綁?

是的,但你會有一個魔鬼的時間把他們放回CookieStore,IIRC。

+0

CommonsWare, 謝謝,你的建議是最有幫助的。我想我現在已經整理好了。 ((((AbstractHttpClient)httpClient) 對於任何人跑過這個問題尋找一些代碼,這是我想出了:(原諒缺少換行符) \t if(((AbstractHttpClient)httpClient)。getCookieStore()。getCookies()。isEmpty()){0}沒有cookie;必須再次登錄 }其他{ \t //有餅乾;無需再次登錄 } – Matt 2010-03-21 14:01:34

相關問題