অ্যান্ড্রয়েডে "অ্যাপ্লিকেশন সেটিংস" করার সর্বোত্তম উপায় কী? [বন্ধ]


108

আমি অ্যান্ড্রয়েড অ্যাপ্লিকেশনটির জন্য কিছু অ্যাপ্লিকেশন সেটিংস (যেমন একটি এপিআইয়ের URL এবং পরীক্ষার জন্য কিছু সেটিংস) সঞ্চয় করতে চাই।

আমি বেশিরভাগই। নেট বিকাশকারী হিসাবে কাজ করি , তাই আমি app.configএই উদ্দেশ্যে ফাইলটি ব্যবহার করতে অভ্যস্ত । অ্যান্ড্রয়েডে এটি করার একটি ভাল উপায় কী?

উত্তর:


148

অনেক অ্যাপ্লিকেশন নির্দিষ্ট অ্যাপ্লিকেশন বা কোনও ক্রিয়াকলাপের সেটিংসে ব্যবহারকারীর পছন্দগুলি ক্যাপচার করার জন্য একটি উপায় সরবরাহ করতে পারে। এটি সমর্থন করার জন্য, অ্যান্ড্রয়েড একটি সহজ সেট করে এপিআই।

পছন্দগুলি সাধারণত নাম মান জোড়। এগুলিকে একটি অ্যাপ্লিকেশনে বিভিন্ন ক্রিয়াকলাপ জুড়ে "ভাগ করা পছন্দসই" হিসাবে সংরক্ষণ করা যেতে পারে (নোট বর্তমানে এটি প্রক্রিয়া জুড়ে ভাগ করা যায় না)। বা এটি এমন কোনও কিছু হতে পারে যা কোনও ক্রিয়াকলাপের সাথে সুনির্দিষ্টভাবে সংরক্ষণ করা দরকার।

  1. ভাগ করা পছন্দসমূহ: ভাগ করা পছন্দগুলি সমস্ত উপাদানগুলি (ক্রিয়াকলাপ, পরিষেবাদি ইত্যাদি) অ্যাপ্লিকেশনগুলির বাইরে ব্যবহার করতে পারে।

  2. ক্রিয়াকলাপ পরিচালিত পছন্দসমূহ: এই পছন্দগুলি কেবল ক্রিয়াকলাপের সাথে ব্যবহার করা যেতে পারে এবং অ্যাপ্লিকেশনটির অন্যান্য উপাদানগুলি ব্যবহার করতে পারে না।

ভাগ করা পছন্দসমূহ:

ভাগ করা পছন্দগুলি শ্রেণীর getSharedPreferencesপদ্ধতির সাহায্যে পরিচালিত হয় Context। পছন্দগুলি ডিফল্ট ফাইলে (1) সঞ্চিত থাকে বা আপনি পছন্দগুলি উল্লেখ করতে কোনও ফাইলের নাম (2) নির্দিষ্ট করতে পারেন।

(1) আপনি ফাইলের নাম নির্দিষ্ট করার সময় আপনি উদাহরণটি কীভাবে পাবেন তা এখানে

public static final String PREF_FILE_NAME = "PrefFile";
   SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);

MODE_PRIVATEপছন্দগুলির জন্য অপারেটিং মোড। এটি ডিফল্ট মোড এবং এর অর্থ এই যে তৈরি করা ফাইলটি কেবল কলিং অ্যাপ্লিকেশন দ্বারা অ্যাক্সেস করা হবে। অন্যান্য দুটি মোড সমর্থিত MODE_WORLD_READABLEএবং MODE_WORLD_WRITEABLE। ইন MODE_WORLD_READABLEঅ্যাপ্লিকেশন নির্মিত ফাইল পড়তে পারেন কিন্তু এটি পরিবর্তন করতে পারবে না। MODE_WORLD_WRITEABLEঅন্যান্য অ্যাপ্লিকেশনগুলির ক্ষেত্রেও তৈরি ফাইলটির লেখার অনুমতি রয়েছে।

(২) প্রস্তাবিত উপায়টি হ'ল ফাইলের নাম উল্লেখ না করে ডিফল্ট মোড দ্বারা ব্যবহার করা

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);

শেষ অবধি, একবার আপনার পছন্দসই উদাহরণটি পাওয়া গেলে, আপনি পছন্দগুলি থেকে সঞ্চিত মানগুলি কীভাবে পুনরুদ্ধার করতে পারেন তা এখানে :

 int storedPreference = preferences.getInt("storedInt", 0);

পছন্দগুলিতে মান সংরক্ষণ করতে ফাইল SharedPreference.Editorঅবজেক্টটি ব্যবহার করতে হবে। শ্রেণীর Editorনেস্টেড ইন্টারফেস SharedPreference

SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();

সম্পাদক এছাড়াও মত পদ্ধতি সমর্থন remove()এবং clear()ফাইল থেকে অগ্রাধিকার মান মুছে দিন।

ক্রিয়াকলাপ পছন্দসমূহ:

ভাগ করা পছন্দগুলি অন্যান্য অ্যাপ্লিকেশন উপাদানগুলি ব্যবহার করতে পারে। তবে আপনার যদি অন্য উপাদানগুলির সাথে পছন্দগুলি ভাগ করার প্রয়োজন না হয় এবং ক্রিয়াকলাপের ব্যক্তিগত পছন্দগুলি চান। আপনি getPreferences()ক্রিয়াকলাপের পদ্ধতির সাহায্যে এটি করতে পারেন । getPreferenceপদ্ধতি ব্যবহার getSharedPreferences()ফাইল অভিরুচি নাম জন্য কার্যকলাপ ক্লাসের নাম দিয়ে পদ্ধতি।

নীচে পছন্দগুলি পেতে কোডটি দেওয়া হচ্ছে

SharedPreferences preferences = getPreferences(MODE_PRIVATE);
int storedPreference = preferences.getInt("storedInt", 0);

মূল্য সংরক্ষণের কোডটিও ভাগ করা পছন্দগুলির ক্ষেত্রে একই।

SharedPreferences preferences = getPreference(MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();

আপনি ডাটাবেসে ক্রিয়াকলাপের স্টোর সংরক্ষণের মতো অন্যান্য পদ্ধতিও ব্যবহার করতে পারেন। দ্রষ্টব্য অ্যান্ড্রয়েডে একটি প্যাকেজও রয়েছে android.preference। প্যাকেজটি অ্যাপ্লিকেশন পছন্দগুলি ইউআই প্রয়োগ করার জন্য ক্লাস সংজ্ঞায়িত করে।

আরও কয়েকটি উদাহরণ দেখতে বিকাশকারীদের সাইটে অ্যান্ড্রয়েডের ডেটা স্টোরেজ পোস্টটি দেখুন।


1
ধন্যবাদ। দেখে মনে হচ্ছে যে আমার যা করা দরকার তা হল আমি যা করছি তার জন্য একটি এক্সএমএল ফাইল ব্যবহার করা (বা সম্ভবত আমি এক্সএমএলটিকে অভ্যন্তরীণভাবে লোড করার জন্য ডেটা হিসাবে ব্যবহার করি) তবে অগ্রাধিকার সামগ্রীটি আমার প্রকল্পের অন্য অংশের জন্য দরকারী is
টিম আলমন্ড

1
আপনি আরম্ভের জন্য এক্সএমএল ফাইলটি ব্যবহার করতে পারেন। আপনাকে এমন কিছু কল করতে হবেPreferenceManager.setDefaultValues(this, R.xml.profiles_preferences, false);
পেন্টিয়াম


1
+1 টি। মনে রাখবেন মাত্র একটি ছোট্ট বিট। preferencesবস্তুতে মান নির্ধারণের পরে , কলিংটি editor.apply()সুপারিশ করা editor.commit()হয় কারণ প্রাক্তন ব্যাকগ্রাউন্ডে সঞ্চয়টি পরিচালনা করবে।
অনিল্য চ্যাটার্জী

2
আমি এখানে কিছুটা বিভ্রান্ত ভাগ করা অগ্রাধিকার অ্যাপ্লিকেশনগুলির উপরে ব্যবহারকারী সেটিংস সঞ্চয় করার জন্য, অ্যাপ্লিকেশন সেটিংস নয় not ব্যবহারকারী (এবং আমিও) ভাবছিলাম অ্যাপটি সঠিকভাবে কাজ করার জন্য অ্যাপ্লিকেশন সেটিংস, প্রাক্তন এপিআই url বা অন্যান্য সেটিংস কোথায় সঞ্চয় করতে হবে।
albanx
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.