我開發了一個Android應用程序。爲了保持用戶登錄,我將他們的用戶名和密碼存儲在擴展Application
的類中。如果用戶在不註銷的情況下退出應用程序,則會啓動一個將使用存儲在應用程序上下文中的用戶憑據(用戶名和密碼)的backgound服務。
這對我來說非常好。但現在我已經在我的手機上安裝了Facebook(三星Galaxy Ace)。它有一項佔用37 MB RAM的服務。現在,當我運行我的應用程序的後臺服務。當我玩遊戲時,或者有時甚至當我鎖定屏幕(用戶名和密碼變爲空)時,應用程序級別的變量會被殺死。
發生了什麼?有什麼其他方式來保持用戶登錄?我不想使用sqlite數據庫來存儲用戶名/密碼。您可以輕鬆查看錶格的值。
注意
我仍然有38 MB的可用RAM即使有這個Facebook的運行。我的應用程序只使用544kb的內存。Android中的應用程序級別變量無效
EDIT1
這似乎令人驚訝,但我沒有做我的代碼進行任何更改。但是現在,即使我打開三個或四個應用程序,Apllication變量(用戶名和密碼)仍然存在。在上面的問題中,我說,只要我鎖定屏幕,Application
瓦器將變爲空。但是現在,即使玩遊戲時(即另一個應用程序打開!),它們似乎仍然存在。顯然,它不是殺死Application
變量的內存限制。
這是什麼原因?什麼決定了殺死應用程序級別的變量?
請參閱edit1。 – Ashwin 2012-07-29 09:52:56
嘗試覆蓋onDestroy()方法並嘗試試用您的應用程序的生命週期。你可能會偶然發現一些線索。 – 2012-07-29 17:36:44
OnDestroy()方法是什麼?就像我說的。在後臺服務啓動之前,所有的活動都會關閉。只是擴展「應用程序」類的變量存在。我如何檢測這些變量的取消或者甚至阻止它? – Ashwin 2012-07-30 05:08:48