mixkat
mixkat

Reputation: 3785

Most effective way of storing Strings in Android

In my app I have 5 String arrays that represent different fields of objects.

i.e.

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

All are attributes of the same object (which is not really an object).


Now I want to store those in order to be able to use them in a new activity that I am creating. Since you are not able to pass objects around I thought that i should save them in Shared preferences.

My question is: Should I save them as separate strings or create a new class with all those fields and then serialize the objects?

Which is the best way in terms of memory usage? In fact is there any other way that you might achieve similar functionality?

Thanks in advance Mike

Upvotes: 1

Views: 3961

Answers (3)

techi.services
techi.services

Reputation: 8533

You can pass a Serializable using an Intent.

Intent.putExtra(String name, Serializable value).

Upvotes: 0

JMRboosties
JMRboosties

Reputation: 15740

You can pass around objects via an intent. The extras function of an intent can store a bundle and send it to specified activities, however they cannot be called at any time (like from a later activity without being explicitly sent). If this is a one time pass to a different activity, the you'd probably want to use that.

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

Here is an example from a test app I made a while back:

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;

Then you catch it like so:

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

Hope this helps.

Upvotes: 0

abhi-rao
abhi-rao

Reputation: 2785

If each of those String Arrays are big "enough" and it appears you do want to store them - have you considered Sqlite? SharedPreferences is most effective to store primitive data in key-value pairs. Check this link - it has neat comparison about the options you have - http://developer.android.com/guide/topics/data/data-storage.html

Upvotes: 2

Related Questions