2011-01-03 33 views
4

オブジェクトを同じアプリケーションのさまざまなアクティビティでアクセスできる場所に保存する方法はありますか?オブジェクトをシリアライズしたりパーセルする必要はありませんか?Androidデータをアプリケーションに保存

答えて

0

SharedPreferencesです。これをアクティビティに入れます

public void saveSetting(String settingName, String value){ 
    SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this); 
    Editor ed = pref.edit(); 
    ed.putString(settingName, value); 
    ed.commit(); 
} 
+0

自分で作成したオブジェクトを渡したいと思っています。私が見ている限り、SharedPreferencesはbuildin型でのみ動作します。 – Christian

+0

これをJSONObjectを使用してstringにシリアル化します。 – Aliostad

+0

アリオスターは真実を語る。箇条書きにしてオブジェクトをシリアライズします。データを保存するには、これを行う必要があります。 –

0

SharedPreferenceは、SharedPreferencesがサポートするオブジェクトにのみ適しています。 オブジェクトの長期保存のためには、何らかの並べ替えられたルートを辿る必要があります。私はData Storage page in the docsを読んでいると思います。そこから私はInternal Storageについて読むことをお勧めします。 Javaのserializbleインターフェイスに対処したくない場合は、XStreamをチェックアウトすることをお勧めします。

XStreamと内部ストレージを組み合わせると、必要なソリューションが提供される場合があります。

0

シリアライゼーション、データベースなどを使用せずにグローバルアプリケーション状態を維持する永続性のポイントを探している場合は、ServiceまたはApplicationクラスを使用します。この問題に関する一般的なヒントはandroid developersです。

1

オブジェクト間でオブジェクトを渡す最も良い方法は、おそらくApplicationを拡張するクラス内の静的フィールドを使用するか、サービスを使用し、オブジェクトをバインドする必要があるアクティビティをバインドすることです。

しかし、Activitiesでは静的フィールドを使用することに注意してください。これらのフィールドはいつでも破壊される可能性があり、したがってスレッドセーフではなく、悲惨な可能性があります。

0

SharedPreferencesを使用するか、シングルトンクラスを作成できます。私はシングルトンクラスを使用して属性のライフサイクルを制御しました。永続性を保証するには、sqllite dbにデータを格納します。

シングルトンを使用すると、カスタムオブジェクトを格納できます。

public class MySingleton { 
private static final AlphResourceSet INSTANCE = new MySingleton(); 
private MySingleton() {} 
public static MySingleton getInstance() { 
    return INSTANCE; 
} 
    // all your getters/setters for your variables 
} 
関連する問題