مناسب ترین راه برای ایجاد تنظیمات برنامه در اندروید استفاده از کلاس `SharedPreferences` ارائه شده در خود اندروید است، این کلاس امکان ذخیره سازی اطلاعات و بازیابی آنها را در تمامی بخش های برنامه به راحتی فراهم می کند، همچنین با بکارگیری از سیستم هشینگ عملیات بازیابی اطلاعات را سریع تر انجام می دهد، بطوری که اگر دسترسی به مقدار خاصی چندین بار در برنامه مورد نیاز باشد تنها در اولین فراخوانی آن هزینه ای صرف بازیابی آن می شود و در فراخوانی های بعدی دسترسی با استفاده از هش ایجاد شده بصورت آنی انجام می پذیرد.

در استفاده از این روش ذخیره سازی داده های اولیه ها و رشته ها به سادگی انجام می پذیرد، ولی اگر بخواهیم یک لیست را ذخیره کنید چه؟

توجه داشته باشید این روش برای ذخیره سازی تنظیمات در اندروید برای نگه داری اطلاعات پر حجم نیست و تنها بری نگه داری اطلاعات کوچک و پر کاربرد ارائه شده است، پس نباید اطلاعات بسیاری در آن ذخیره شود

در زیر دو روش مختلف برای ذخیره سازی یک آرایه را ارائه میدهیم:

روش نخست: (راه حل ساده)

ساده ترین راهی که به ذهن هر کسی میرسد، ذخیره تک تک المنت های آرایه بصورت جدا و بازیابی آنها و ایجاد دوباره آرایه است.

``` // SAVE TO PREFERENCES //String array[] //SharedPreferences prefs Editor edit = prefs.edit(); edit.putInt("array_size", array.length); for(int i=0;i// RETRIVE ARRAY
int size = prefs.getInt("array_size", 0);
array = new String[size];
for(int i=0; i<size; i++)
array[i] = prefs.getString("array_" + i, null);


<h3>روش دوم: (استفاده از کلاس `ObjectSerializer`)</h3>
<p>در روش دوم کمی پیچیده تر عمل کرده و با استفاده از قابلیت ذخیره سازی اطلاعات بصورت `Object` در جاوا، آرایه را بصورت یکجا ذخیره می کنیم. در مثال زیر کلاسی خاص برای هر عضو آرایه نوشته شده است، دقت داشته باشید که اگر کلاسی جدید تعریف می کنید حتما باید اینترفیس `Serializable` را پیاده سازی کرده و متود `hashCode()` را دوباره نویسی (`override`) کنید.</p>

public static class NavigationAction implements Serializable {

/**
 * 
 */
private static final long serialVersionUID = -1405146028578043806L;
String first;
String second;

public NavigationAction(String first, String second) {
	this.first = first;
	this.second = second;
}

@Override
public int hashCode() {
	return (first + second).hashCode();
}

}

// SAVE ARRAYLIST
private void setNavigationActionsList(ArrayList list) {
SharedPreferences sp = getSharedPreferences(
"APP_PRIVATE_PREFS", Context.MODE_PRIVATE);
Editor edit = sp.edit();
try {
edit.putString(NAVIGATION_ACTIONS_LIST,
ObjectSerializer.serialize(list));
} catch (IOException e) {
e.printStackTrace();
}
edit.commit();
}

// RETRIVE ARRAYLIST
private ArrayList getNavigationActionsList() {
ArrayList result = null;
SharedPreferences sp = getActivity().getSharedPreferences(
"APP_PRIVATE_PREFS", Context.MODE_PRIVATE);
try {
result = (ArrayList) ObjectSerializer
.deserialize(sp.getString(
NAVIGATION_ACTIONS_LIST,ObjectSerializer.serialize(
new ArrayList())));
} catch (IOException e) {
e.printStackTrace();
}
return result;
}

<p>کلاس <a href="https://github.com/apache/pig/blob/89c2e8e76c68d0d0abe6a36b4e08ddc56979796f/src/org/apache/pig/impl/util/ObjectSerializer.java">ObjectSerializer</a> در پروژه <em>Pig</em> آپاچی قابل دسترس است.</p>