SZsXsZS
دوشنبه 09 فروردین 1395, 03:46 صبح
اخیرا این سوال رو در stackoverflow مطرح کردم: http://stackoverflow.com/questions/35926112/creating-a-new-sharedpreferences-object-each-time-for-reading-config-vars
سوال اینه که اگر در جاهای زیادی از برنامه داریم از SharedPreferences استفاده میکنیم، اونوقت یعنی در نقاط متعددی از برنامه کد تکراری ای شبیه این داریم:
SharedPreferences prefs=PreferenceManager.getDefaultSharedPreference s(this);
خب این هم کدش تکراری هست و هم این سوال پیش میاد که آیا از نظر اصول و پرفورمنس به برنامه صدمه نمیزنه؟ منظورم اینه چرا مدام باید یک شیء SharedPreferences ایجاد کنیم، در صورتی که میشه فقط یک بار یکی ازش ایجاد کرد و بعد در سراسر برنامه فقط از همون instance استفاده کنیم!
پاسخهایی که دادن ظاهرا کسی با این مخالف نبود که ما بیایم و یک شیء SharedPreferences ایجاد کنیم و در سراسر برنامه اون رو به اشتراک بذاریم.
بخاطر همین بنده به این شکل عمل کردم که یک کلاس خیلی مختصر با یک فیلد استاتیک برای ذخیره سازی این شیء به برنامم اضافه کردم:
public class Prefs {
public static SharedPreferences p;
}
اونوقت فقط یک بار موقع ایجاد اکتیویتی اصلی برنامه، این کد در onCreate اجرا میشه:
Prefs.p=PreferenceManager.getDefaultSharedPreferen ces(this);
بعد هر وقت در سراسر برنامه میتونم براحتی از این کدی مشابه این برای خوندن تنظیمات برنامه استفاده کنم:
Prefs.p.getString("lang", "default");
کدش کوتاهتر و خواناتر هم هست بنظر بنده.
البته خودتون میدونید که بنده زیاد روی پرفورمنس و بهینه سازی حساس نیستم، ولی این روش مزیتی بیشتر از صرف بهینه سازی داره و باعث کاهش کدهای تکراری و کاهش حجم و پیچیدگی کد میشه که بنظر من خیلی مطلوبه.
سوال اینه که اگر در جاهای زیادی از برنامه داریم از SharedPreferences استفاده میکنیم، اونوقت یعنی در نقاط متعددی از برنامه کد تکراری ای شبیه این داریم:
SharedPreferences prefs=PreferenceManager.getDefaultSharedPreference s(this);
خب این هم کدش تکراری هست و هم این سوال پیش میاد که آیا از نظر اصول و پرفورمنس به برنامه صدمه نمیزنه؟ منظورم اینه چرا مدام باید یک شیء SharedPreferences ایجاد کنیم، در صورتی که میشه فقط یک بار یکی ازش ایجاد کرد و بعد در سراسر برنامه فقط از همون instance استفاده کنیم!
پاسخهایی که دادن ظاهرا کسی با این مخالف نبود که ما بیایم و یک شیء SharedPreferences ایجاد کنیم و در سراسر برنامه اون رو به اشتراک بذاریم.
بخاطر همین بنده به این شکل عمل کردم که یک کلاس خیلی مختصر با یک فیلد استاتیک برای ذخیره سازی این شیء به برنامم اضافه کردم:
public class Prefs {
public static SharedPreferences p;
}
اونوقت فقط یک بار موقع ایجاد اکتیویتی اصلی برنامه، این کد در onCreate اجرا میشه:
Prefs.p=PreferenceManager.getDefaultSharedPreferen ces(this);
بعد هر وقت در سراسر برنامه میتونم براحتی از این کدی مشابه این برای خوندن تنظیمات برنامه استفاده کنم:
Prefs.p.getString("lang", "default");
کدش کوتاهتر و خواناتر هم هست بنظر بنده.
البته خودتون میدونید که بنده زیاد روی پرفورمنس و بهینه سازی حساس نیستم، ولی این روش مزیتی بیشتر از صرف بهینه سازی داره و باعث کاهش کدهای تکراری و کاهش حجم و پیچیدگی کد میشه که بنظر من خیلی مطلوبه.