SharedPreferences-এর মাধ্যমে সাধারণ ডেটা সেভ করা

আপনার কাছে যদি সেভ করার মতো তুলনামূলকভাবে ছোট কী-ভ্যালুর সংগ্রহ থাকে, তাহলে আপনি SharedPreferences API ব্যবহার করতে পারেন। একটি SharedPreferences অবজেক্ট কী-ভ্যালু পেয়ার সহ একটি ফাইলকে নির্দেশ করে এবং সেগুলি পড়তে ও লিখতে সহজ পদ্ধতি প্রদান করে। প্রতিটি SharedPreferences ফাইল ফ্রেমওয়ার্কের মাধ্যমে ম্যানেজ করা হয় এবং ব্যক্তিগত বা শেয়ার করা হতে পারে।

এই পৃষ্ঠা থেকে আপনি জানতে পারবেন যে কীভাবে SharedPreferences API ব্যবহার করে সহজ ভ্যালু স্টোর ও উদ্ধার করা যায়।

শেয়ার করা পছন্দগুলি ম্যানেজ করার জন্য একটি হ্যান্ডেল পান

আপনি নতুন শেয়ার করা প্রেফারেন্স ফাইল তৈরি করতে পারেন অথবা আগে থেকে থাকা কোনও ফাইল অ্যাক্সেস করতে পারেন, এর জন্য এইসব পদ্ধতির মধ্যে কোনও একটি কল করতে হবে:

  • getSharedPreferences(): আপনার একাধিক শেয়ার করা পছন্দসই ফাইল প্রয়োজন হলে এটি ব্যবহার করুন, যেটি প্রথম প্যারামিটার দিয়ে নির্দিষ্ট করা হয়। আপনার অ্যাপের যেকোনও Context থেকে আপনি এটি কল করতে পারবেন।
  • getPreferences(): অ্যাক্টিভিটির জন্য শুধুমাত্র একটি শেয়ার করা প্রেফারেন্স ফাইল ব্যবহার করতে হলে, Activity থেকে এটি ব্যবহার করুন। যেহেতু এটি অ্যাক্টিভিটির সাথে সম্পর্কিত ডিফল্ট শেয়ার করা প্রেফারেন্স ফাইল ফিরিয়ে আনে, তাই আপনাকে কোনও নাম দিতে হবে না।

যেমন, নিম্নলিখিত কোডটি শেয়ার করা প্রেফারেন্স ফাইল অ্যাক্সেস করে যা রিসোর্স স্ট্রিং R.string.preference_file_key দ্বারা শনাক্ত করা হয় এবং প্রাইভেট মোড ব্যবহার করে এটি খোলে যাতে ফাইলটি শুধুমাত্র আপনার অ্যাপের মাধ্যমে অ্যাক্সেস করা যায়:

Kotlin

val sharedPref = activity?.getSharedPreferences(
        getString(R.string.preference_file_key), Context.MODE_PRIVATE)

জাভা

Context context = getActivity();
SharedPreferences sharedPref = context.getSharedPreferences(
        getString(R.string.preference_file_key), Context.MODE_PRIVATE);

আপনার শেয়ার করা প্রেফারেন্স ফাইলের নাম দেওয়ার সময়, এমন নাম ব্যবহার করা উচিত যা আপনার অ্যাপের জন্য অনন্যভাবে শনাক্তযোগ্য। এটি করার একটি ভালো উপায় হল, ফাইলের নামের আগে আপনার অ্যাপ্লিকেশন আইডি ব্যবহার করা। যেমন: "com.example.myapp.PREFERENCE_FILE_KEY"

বিকল্প হিসেবে, আপনার অ্যাক্টিভিটির জন্য শুধু একটি শেয়ার করা প্রেফারেন্স ফাইল প্রয়োজন হলে, আপনি getPreferences() পদ্ধতি ব্যবহার করতে পারেন:

Kotlin

val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE)

জাভা

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);

আপনি অ্যাপ সেটিংস সেভ করার জন্য SharedPreferences API ব্যবহার করলে, আপনার সম্পূর্ণ অ্যাপের জন্য ডিফল্ট শেয়ার করা পছন্দ ফাইল পেতে getDefaultSharedPreferences() ব্যবহার করা উচিত। আরও তথ্যের জন্য, সেটিংস ডেভেলপার নির্দেশিকা দেখুন।

শেয়ার করা পছন্দগুলিতে লিখুন

শেয়ার করা প্রেফারেন্স ফাইলে লিখতে, আপনার SharedPreferences-এ edit() কল করে SharedPreferences.Editor তৈরি করুন।

আপনি যে কী ও ভ্যালু লিখতে চান তা এই ধরনের পদ্ধতির মাধ্যমে পাস করুন: putInt() এবংputString()। তারপর পরিবর্তন সেভ করতে apply() অথবা commit() নম্বরে কল করুন। যেমন:

Kotlin

val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return
with (sharedPref.edit()) {
    putInt(getString(R.string.saved_high_score_key), newHighScore)
    apply()
}

জাভা

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt(getString(R.string.saved_high_score_key), newHighScore);
editor.apply();

apply() ইন-মেমরি SharedPreferences অবজেক্ট অবিলম্বে পরিবর্তন করে কিন্তু ডিস্কে আপডেটগুলি অ্যাসিঙ্ক্রোনাসভাবে লেখে। এছাড়াও, আপনি commit() ব্যবহার করে ডিস্কে ডেটা সিঙ্ক করতে পারেন। কিন্তু commit() সিঙ্ক্রোনাস হওয়ার কারণে, আপনার প্রধান থ্রেড থেকে এটি কল করা এড়িয়ে চলুন কারণ এটি আপনার UI রেন্ডারিং পজ করতে পারে।

শেয়ার করা পছন্দ থেকে পড়ুন

শেয়ার করা প্রেফারেন্স ফাইল থেকে ভ্যালু ফিরিয়ে আনতে, getInt() এবং getString()-এর মতো কল মেথড ব্যবহার করুন, আপনার প্রয়োজনীয় ভ্যালুর জন্য 'কী' প্রদান করুন এবং 'কী' না থাকলে ফিরিয়ে আনার জন্য বিকল্প হিসেবে ডিফল্ট ভ্যালু প্রদান করুন। যেমন:

Kotlin

val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return
val defaultValue = resources.getInteger(R.integer.saved_high_score_default_key)
val highScore = sharedPref.getInt(getString(R.string.saved_high_score_key), defaultValue)

জাভা

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
int defaultValue = getResources().getInteger(R.integer.saved_high_score_default_key);
int highScore = sharedPref.getInt(getString(R.string.saved_high_score_key), defaultValue);