2017-08-25 9 views
0

ライブラリを使用していて、毎回i have to loginを使用したい場合は、objectのログインに時間がかかります。Javaオブジェクトをアンドロイドに永続化する方法

私は自分のアプリを開くたびに待たずにいます。

このログインオブジェクトを保持する方法はありますか? (アプリケーションを終了した後)このオブジェクトをメモリまたはディスクに保存するか、SharedPreferencesをStringとして保持できますか?

ターゲットクラスは、これらのfiledsがあります

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(); 

あなたは解決策を持っている場合だけでなく、サンプルコードを記入してください。

私は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、username、password(パスワードは保存しないでください).... etc その後、各行は新しいオブジェクトを表します。つまり、テーブルから目的の行を取得し、その値をオブジェクトクラスに貼り付けるだけです。 データベースの仕組みがわからない場合は、SQLiteを読み上げてください。 ここでは、Androidでの操作方法を紹介します:https://developer.android.com/training/basics/data-storage/databases.html –

0

Androidに情報を保存する方法は複数あります。 簡単なタイプ(booleanlongString)を簡単に維持できる場合は、他のタイプのシリアル化に重要な情報を判断する必要があります。

たとえば、OkHttpClientはウェブクライアントであり、貴重なデータを保持しないため永続化しないでください。あなたは以下の可能性のうちの1つで動作することができますことを

を言った:

  • 使用SharedPreferences、これはあなたがindependantly各フィールドを格納できる単純なキー/値ストアです。
  • SQLiteのようなデータベースを使用すると、それを統合するにはもっと多くの作業が必要になりますが、今後さらに多くのデータがあると便利になる場合があります。
  • java Serializationを使用すると、クラスのバイナリ表現をファイルに書き込んで後で取得することができます。しかし、ResponseOkHttpClient、およびCookieクラスはシリアライズ可能ではない可能性があります(シリアライズ可能な情報を他から切り離す必要があります)。
関連する問題