1

私のアプリでは、オブジェクトの異なるフィールドを表す5つの文字列配列があります。Androidで文字列を格納する最も効果的な方法

すなわち

String_A[1], 
String_B[1], 
String_C[1], 
String_D[1], 
String_E[1], 

すべてが(実際にはオブジェクトではない)、同じオブジェクトの属性です。


私が作成している新しいアクティビティでそれらを使用できるようにするために、それらを保存します。周りのオブジェクトを渡すことができないので、私は共有環境設定でそれらを保存する必要があると思った。

私の質問は次のとおりです:それらを別々の文字列として保存するか、それらのフィールドをすべて入れた新しいクラスを作成してオブジェクトをシリアル化する必要がありますか?

どちらがメモリ使用量の最も良い方法ですか?実際には、他の方法で同様の機能を実現できますか? マイク

答えて

2

事前に

おかげで、これらの文字列配列のそれぞれは、「十分に」大であれば、あなたがそれらを保存したいん表示されます - あなたはSQLiteにも検討していますか? SharedPreferencesは、キーと値のペアにプリミティブデータを格納するのに最も効果的です。このリンクをチェックする - それはあなたが持っているオプションについて素敵な比較を持っています - http://developer.android.com/guide/topics/data/data-storage.html

+0

うんだけでシリアライズされたオブジェクトがSharedPreferencesに格納するためにかなり大きいことが判明...イムつもりは返事をdb..thanksを使用する必要があります。.. – mixkat

+0

は申し訳ありませんうん – mixkat

0

あなたは意図を介してオブジェクトを渡すことができます。インテントのエクストラ機能は、バンドルを保存して特定のアクティビティに送信できますが、(明示的に送信されずに後のアクティビティからのように)いつでも呼び出すことはできません。これが別のアクティビティへの1回のパスであれば、おそらくそれを使用したいと思うでしょう。ここで

http://developer.android.com/reference/android/content/Intent.html#putExtras%28android.content.Intent%29

私はしばらく前に作られたテスト用のアプリからの例です:

public void onClick(View v) { 
      switch(v.getId()) { //this references the unique ID of the view that was clicked 
       case R.id.Button01: //this is what happens when the Button in the XML with android:id="@+id/Button01" is clicked 
      Intent nameGreet = new Intent(this, MainMenu.class);//creates Intent which will send the EditText input 
        String theName = firstName.getText().toString();// creates a new string named "theName" which is the text from an EditText called "firstName" 
        nameGreet.putExtra("helloName", theName);//puts the input from EditText into the Intent, this is a key/value pair 
        this.startActivity(nameGreet);//setting off the Intent 
        break; 

次にあなたがそうのようにそれをキャッチ:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    this.setContentView(R.layout.main_menu); 
    String personsname = this.getIntent().getStringExtra("helloName"); 
    welcome = (TextView)this.findViewById(R.id.TextView01); 
    welcome.setText(personsname); 

・ホープ、このことができます。

+0

ああいいえ、私がいることを知っている:)ことを行うことを忘れてしまいましたあなたは原始的なデータを渡すことができます。私は実際のオブジェクトについて話していました。とにかく返信に感謝します... – mixkat

+0

ああ、私の間違い。 SQLiteのヘルプが必要ですか? – JMRboosties

+0

実際のオブジェクトの周りを渡すことができます - それらは 'Parcelable'または' Serializable'である必要があります –

0

Intentを使用してSerializableを渡すことができます。

Intent.putExtra(String name, Serializable value)

関連する問題