উত্তর:
getDefaultSharedPreferences
"com.example.something_preferences" এর মতো একটি ডিফল্ট নাম ব্যবহার করবে তবে একটি নামের প্রয়োজনgetSharedPreferences
হবে ।
getDefaultSharedPreferences
প্রকৃতপক্ষে ব্যবহারগুলি Context.getSharedPreferences
(নীচে সরাসরি অ্যান্ড্রয়েড উত্স থেকে এসেছে):
public static SharedPreferences getDefaultSharedPreferences(Context context) {
return context.getSharedPreferences(getDefaultSharedPreferencesName(context),
getDefaultSharedPreferencesMode());
}
private static String getDefaultSharedPreferencesName(Context context) {
return context.getPackageName() + "_preferences";
}
private static int getDefaultSharedPreferencesMode() {
return Context.MODE_PRIVATE;
}
getDefaultSharedPreferencesName
সর্বজনীন নয় যেমন নাম ব্যাকআপ জন্য প্রয়োজন হয় / ফ্রেমওয়ার্ক ফিরিয়ে আনুন।
আসুন পার্থক্যের মূল বিষয়গুলি পর্যালোচনা করুন:
getDefaultSharedPreferences()
একটি ডিফল্ট পছন্দ-ফাইল নাম ব্যবহার করে। এই ডিফল্ট অ্যাপ্লিকেশন প্রতি সেট করা হয়েছে, তাই একই অ্যাপ্লিকেশন প্রসঙ্গে সমস্ত ক্রিয়াকলাপ নীচের উদাহরণের মতো সহজেই এটি অ্যাক্সেস করতে পারে:
SharedPreferences spref = PreferenceManager.getDefaultSharedPreferences(this);
if (spref.contains("email")) {
String sEmailAddr = spref.getString("email", "");
}
পছন্দগুলি সাধারণত সংরক্ষণ করা হয় /data/data/com.package.name/shared_prefs/com.package.name_preferences.xml
।
বিকল্প পদ্ধতি - getSharedPreferences(name,mode)
একটি নির্দিষ্ট পছন্দ (ফাইল) নাম এবং একটি অপারেশন মোড (যেমন ব্যক্তিগত, ওয়ার্ল্ড_ড্রেডেবল, ইত্যাদি) নির্দেশ করতে হবে requires
কোপোলাই দ্বারা উল্লিখিত হিসাবে, ফলাফলটি একই রকম, তবে প্রথম বিকল্পটি সহজ এবং একাধিক পছন্দসই ফাইলগুলিতে বিভক্ত হওয়ার নমনীয়তার অভাব রয়েছে, এটি দ্বিতীয় বিকল্প দ্বারা দেওয়া getSharedPreferences()
। একটি MODE_WORLD_READABLE অপারেশন সূচক ব্যবহার করে অ্যাপ্লিকেশনগুলির মধ্যে পছন্দগুলি ভাগ করে নেওয়াও এমন কিছু সম্ভব যা ব্যবহার করা সম্ভব getSharedPreferences()
তবে এটি খুব কমই ব্যবহৃত হয়।
আইএমএইচও, getDefaultSharedPreferences()
টাইপস এবং বিভ্রান্তির ঝুঁকিপূর্ণ একাধিক পছন্দ ফাইল ফাইলগুলির বিভ্রান্তির মধ্যে না গিয়ে নিরাপদে ব্যবহার করা যেতে পারে, আপনি যদি না চান যে আপনার অ্যাপের বিভিন্ন মডিউল বিভিন্ন পছন্দ ফাইল ব্যবহার করবে। সাধারণত এটির প্রয়োজন হয় না। যদি কোনও অ্যাপ্লিকেশনটিকে অনেকগুলি পরামিতি সঞ্চয় করতে হয় তবে সম্ভবত বাহ্যিক ডাটাবেস ব্যবহার করা আরও ভাল হবে কারণ এটি আরও ভাল ডেটা সুরক্ষা সরবরাহ করে।
যদি কেউ নিয়মিত getSharedPreferences () এবং getDefaultSharedPreferences () না ব্যবহার করার কোনও ভাল কারণ জানেন তবে দয়া করে এখানে মন্তব্য করে আমাকে জানান।
আমি জানি এই পোস্টটি কিছুটা পুরানো, তবে ভি 7 সমর্থন লাইব্রেরির 24.0.1 সাল থেকে আপনি যে কোনও জায়গায় প্রসঙ্গ দ্বারা ডিফল্ট পছন্দগুলি পুনরুদ্ধার করতে পারবেন
// context might be an application context, activity, ..
// so if you want to get your apps defaults, pass an activity context
PreferenceManager.getDefaultSharedPreferences(context)
Https://developer.android.com/references/android/support/v7/preferences/PreferencesManager#getdefaultsharedpreferences দেখুন
তৃতীয় ফাংশনও রয়েছে:
public SharedPreferences Activity.getPreferences(int mode) {}
আমার প্রশ্নোত্তরটি এখানে দেখুন: অ্যান্ড্রয়েডের ভাগ করা পছন্দগুলি নিয়ে গণ্ডগোল - কোন ফাংশনটি ব্যবহার করতে হবে?
GetSharedPreferences () এবং getDefaultSharedPreferences () উভয়ই অ্যাপ্লিকেশন স্তরের পছন্দগুলি অ্যাক্সেস করতে ব্যবহৃত হয়। getDefaultSharedPreferences () ব্যবহার করা আরও ভাল কারণ এটি SharedPreferences অবজেক্ট দেয় যা ডিফল্টরূপে পছন্দক্রমের সাথে কাজ করে।
সচেতন হন যে ডিফল্ট ভাগ করা পছন্দগুলি আপনার প্যাকেজের নামের সাথে ভাগ করা পছন্দগুলি ব্যবহার করার মতো নয় :
context.getSharedPreferences(getPackageName(), MODE_PRIVATE);
=> ভাগ করা পছন্দগুলির নাম: " com.my.packagename "
PreferenceManager.getDefaultSharedPreferences(context);
=> ভাগ করা পছন্দগুলির নাম: " com.my.packagename_preferences "
Context
কোনও একটিকে কল করার জন্য আপনার একটি উদাহরণ প্রয়োজন ।