যদি আপনার কাছে কী-মানের তুলনামূলকভাবে ছোট সংগ্রহ থাকে যা আপনি সংরক্ষণ করতে চান, আপনি SharedPreferences
API ব্যবহার করতে পারেন। একটি SharedPreferences
অবজেক্ট কী-মান জোড়া ধারণকারী একটি ফাইলের দিকে নির্দেশ করে এবং সেগুলি পড়তে এবং লিখতে সহজ পদ্ধতি প্রদান করে। প্রতিটি SharedPreferences
ফাইল ফ্রেমওয়ার্ক দ্বারা পরিচালিত হয় এবং ব্যক্তিগত বা শেয়ার করা যেতে পারে।
এই পৃষ্ঠাটি আপনাকে দেখায় কিভাবে সাধারণ মানগুলি সংরক্ষণ এবং পুনরুদ্ধার করতে SharedPreferences
API ব্যবহার করতে হয়।
ভাগ করা পছন্দগুলির একটি হ্যান্ডেল পান৷
আপনি একটি নতুন ভাগ করা পছন্দ ফাইল তৈরি করতে পারেন বা এই পদ্ধতিগুলির মধ্যে একটিতে কল করে বিদ্যমান একটি অ্যাক্সেস করতে পারেন:
-
getSharedPreferences()
: যদি আপনার নাম দ্বারা চিহ্নিত একাধিক ভাগ করা পছন্দের ফাইলের প্রয়োজন হয় তবে এটি ব্যবহার করুন, যা আপনি প্রথম প্যারামিটার দিয়ে নির্দিষ্ট করেছেন। আপনি আপনার অ্যাপের যেকোনোContext
থেকে এটি কল করতে পারেন। -
getPreferences()
: আপনি যদি ক্রিয়াকলাপের জন্য শুধুমাত্র একটি ভাগ করা পছন্দ ফাইল ব্যবহার করতে চান তবে একটিActivity
থেকে এটি ব্যবহার করুন। যেহেতু এটি একটি ডিফল্ট ভাগ করা পছন্দ ফাইল পুনরুদ্ধার করে যা কার্যকলাপের অন্তর্গত, আপনাকে একটি নাম সরবরাহ করতে হবে না।
উদাহরণস্বরূপ, নিম্নলিখিত কোডটি শেয়ার করা পছন্দের ফাইল অ্যাক্সেস করে যা রিসোর্স স্ট্রিং R.string.preference_file_key
দ্বারা চিহ্নিত করা হয় এবং এটি ব্যক্তিগত মোড ব্যবহার করে খোলে যাতে ফাইলটি শুধুমাত্র আপনার অ্যাপ দ্বারা অ্যাক্সেসযোগ্য হয়:
কোটলিন
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()
পদ্ধতি ব্যবহার করতে পারেন:
কোটলিন
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()
কল করুন। যেমন:
কোটলিন
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()
, আপনি যে মানটি চান তার জন্য কী প্রদান করুন এবং কী উপস্থিত না থাকলে ঐচ্ছিকভাবে একটি ডিফল্ট মান ফেরত দিন। যেমন:
কোটলিন
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);