Самый эффективный способ хранения строк в Android - PullRequest
1 голос
/ 06 февраля 2011

В моем приложении у меня есть 5 массивов String, которые представляют разные поля объектов.

т.е.

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

Все являются атрибутами одного и того же объекта (который на самом деле не является объектом).


Теперь я хочу сохранить их, чтобы иметь возможность использовать их в новом действии, которое я создаю. Поскольку вы не можете передавать объекты, я решил сохранить их в общих настройках.

У меня такой вопрос: я должен сохранить их как отдельные строки или создать новый класс со всеми этими полями и затем сериализовать объекты?

Каков наилучший способ с точки зрения использования памяти? На самом деле, есть ли другой способ, которым вы могли бы достичь аналогичной функциональности?

Спасибо заранее Mike

Ответы [ 3 ]

2 голосов
/ 06 февраля 2011

Если каждый из этих String Arrays достаточно большой и кажется, что вы действительно хотите сохранить его - рассматривали ли вы Sqlite?SharedPreferences наиболее эффективен для хранения примитивных данных в парах ключ-значение.Проверьте эту ссылку - она ​​имеет аккуратное сравнение вариантов, которые у вас есть - http://developer.android.com/guide/topics/data/data-storage.html

0 голосов
/ 06 февраля 2011

Вы можете передать Serializable, используя Intent.

Intent.putExtra(String name, Serializable value).

0 голосов
/ 06 февраля 2011

Вы можете передавать объекты через намерение.Функция extras намерения может хранить пакет и отправлять его указанным действиям, однако их нельзя вызывать в любое время (например, из более позднего действия без явной отправки).Если это однократный переход к другому виду деятельности, вы, вероятно, захотите его использовать.

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

Надеюсь, это поможет.

...