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 ...我將不得不使用分貝..感謝您的答覆.. – mixkat 2011-02-06 19:58:48

+0

是啊對不起忘了這麼做:) – mixkat 2011-02-07 01:43:59

0

你可以通過intent傳遞對象。 intent的extras函數可以存儲一個bundle並將其發送到指定的活動,但是它們不能在任何時候被調用(例如從後面的活動中不明確發送)。如果這是一次性傳遞給不同的活動,那麼你可能會想要使用它。

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

您可以通過Serializable使用Intent

Intent.putExtra(String name, Serializable value)

相關問題