2017-08-25 71 views
0

我正在使用一個庫,每次我想先使用它i have to login first.and它需要一些時間才能登錄object,這並不好。如何堅持java對象在android

我不想等我每次打開我的應用程序。

有沒有辦法保持這個登錄對象? (關閉應用程序後)我可以保持這個對象在內存或磁盤或在SharedPreferences作爲字符串?如果你有一個解決方案,請寫一個示例代碼以及

protected String deviceId; 
private String username; 
private String password; 
protected boolean isLoggedIn; 
private String uuid; 
protected String rankToken; 
private long userId; 
protected Response lastResponse; 
protected OkHttpClient client; 
private final Set<Cookie> cookieStore = new HashSet(); 

目標類有這些的Fileds。

我SOFAR嘗試這樣做,沒有工作:

String json = gson.toJson(insta,Target.class); 
Target myTarget = gson.fromJson(json, Target.class); 

json是空的。

+1

如果我得到你的問題,那麼你可以將它存儲在數據庫中,或者使用數據創建一個json,並將其放置在'SharedPreferences'中,並從'SharedPreferences'開始應用程序分析之後。 –

+0

@SRBbans我試過'Gson',但沒有工作......請你寫一個示例代碼? – Mehrad

+0

@Mehrad互聯網充滿了例子,你究竟試過了什麼? – lelloman

回答

0

你在使用什麼庫? 如果圖書館提供季節令牌,則可以存儲季節令牌。 此外,爲什麼不將數據存儲在數據庫(本地)中,並且當用戶啓動應用程序時,首先從數據庫獲取數據,同時在後臺執行登錄請求。一旦登錄剛更新數據是否需要更新。

+0

如何存儲和重新創建對象是問題所在。 @red_spark – Mehrad

+0

您在數據庫中創建了一個表,其中包含表示數據的列。示例:deviceId,用戶名,密碼(不應存儲密碼)....等 之後,每行代表一個新對象。所以你所要做的就是從表格中獲取所需的行並將其中的值粘貼到對象類中。 如果你不知道數據庫是如何工作的,你應該閱讀SQLite。 阿洛斯在這裏是你如何在Android中進行:https://developer.android.com/training/basics/data-storage/databases.html –

0

您有多種方式在Android中保存信息。 但請記住,如果您可以輕鬆保留簡單類型(boolean,longString),則必須確定哪些信息對於其他類型的序列化很重要。

例如,OkHttpClient不應該被保留,因爲它只是一個Web客戶端,並不包含任何有價值的數據。

說了這麼多,你可以用以下的可能性之一工作:

  • 使用SharedPreferences,這是簡單的鍵/值存儲在其中您可以independantly存儲每個字段。
  • 使用類似於SQLite這樣的數據庫,需要更多的工作來整合它,但是如果將來有更多的數據,它會變得非常方便。
  • 使用java Serialization,它將使您能夠在文件中寫入類的二進制表示,然後再檢索它。但要小心那些不可序列化的類(需要將可序列化的信息與其他序列化信息分開)的那些Response,OkHttpClientCookie類。