SharedPreferences থেকে কিছু কী / মান জুটি কীভাবে সরানো যায়?


90

SharedPreferences থেকে কিছু কী / মান জুটি কীভাবে সরানো যায়? আমি রেখেছি এবং আমি এটি প্রিফেস থেকে সরাতে চাই।

উত্তর:


218
SharedPreferences mySPrefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = mySPrefs.edit();
editor.remove(key);
editor.apply();

এখানে সম্পাদক ভাগ করা পছন্দসই সম্পাদক।


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

4
@ সিলওয়ার, আপনি প্রয়োগটি () কোন প্রতিশ্রুতিতে পুনরায় সংশোধন করলেন ()? জেনে রাখা যে ডকুমেন্টেশনটি
প্রয়োগটি

13

এটি লক্ষণীয় গুরুত্বপূর্ণ যে আপনি যদি কমিট () কলটির রিটার্ন মান দিয়ে কিছু করার পরিকল্পনা না করেন, ততক্ষণে অ্যাসিঙ্ক্রোনাস অ্যাপ্লিকেশন () কলের পরিবর্তে সিঙ্ক্রোনাস কমিট () কলটি ব্যবহার করার কোনও কারণ নেই।

মনে রাখবেন যে আপনি যদি এইটিকে মূল / ইউআই থ্রেড থেকে কল করছেন তবে কমিট () সম্পন্ন না হওয়া অবধি ইউআই অবরুদ্ধ থাকবে। প্রয়োগের জন্য প্রায় 5 মিমি হিসাবে প্রয়োগ করা হিসাবে এটি প্রায় 100ms এর উপরে যেতে পারে take এটি খুব বেশি মনে হচ্ছে না, তবে যদি কোনও অ্যাপ্লিকেশন জুড়ে ধারাবাহিকভাবে এটি করা হয় তবে তা অবশ্যই যুক্ত হয়ে যাবে।

সুতরাং, যদি না আপনি এই জাতীয় কিছু করার পরিকল্পনা করছেন, আশা করি একটি পৃথক থ্রেডে:

editor.remove(String key); 
boolean success = editor.commit();
if (!success) { 
    // do something 
}

পরিবর্তে আপনার এটি করা উচিত:

editor.remove(String key); 
editor.apply();

কমিট বনাম প্রয়োগ কখন ব্যবহার করতে হয় তার একটি ভাল (বাস্তব জগত) ব্যাখ্যা আমি সন্ধান করছি। এটি স্পষ্টভাবে পয়েন্টটি ড্রাইভ করে।
এক্সএমএএন

9
SharedPreferences.Editor.remove(key) 
commit();

4
আপনি যদি মুছে ফেলা পদ্ধতি থেকে রিটার্ন মানটি ব্যবহার না করেন এবং আপনি এটি আপনার অ্যাপ্লিকেশনের মূল থ্রেড থেকে ব্যবহার করছেন তবে পরিবর্তে প্রয়োগ () ব্যবহার করে বিবেচনা করুন।
কার্তিক শ্রীবাস্তব


3

এই সমস্যাটিকে আমি কীভাবে সামলেছি তা এখানে।

প্রথমে আমি SharedPreferences হিসাবে একটি উদাহরণ তৈরি করেছি

SharedPreferences mobilePreference;

তারপরে আমি এই ভাগ করা পছন্দ হিসাবে ব্যবহার করেছি

mobilePreference = this.getSharedPreferences("in.bhartisoftwares.amit.allamitappsthree", Context.MODE_PRIVATE);

এখানে "in.bhartisoftwares.amit.allamitappsthree" হ'ল আমার প্যাকেজের নাম এবং আমি কনটেক্সট.মোড।

তারপরে আমি নির্বাচিত শেয়ারডপ্রেফারেন্সটি (আমার শেয়ারডপ্রিফারেন্সটির মূলটি মোবাইলস্ট্রিং) মুছে ফেলছি:

mobilePreference.edit().remove("mobileString").commit();

নীচে পুরো কোডটি দেখুন:

SharedPreferences mobilePreference = this.getSharedPreferences("in.bhartisoftwares.amit.allamitappsthree", Context.MODE_PRIVATE);
    mobilePreference.edit().remove("mobileString").commit();

1

তথ্য

কেবল চেক sharedprefক্লাসটিই রয়েছে Mapযার কারণে removeপদ্ধতি রয়েছে

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = prefs.edit();
editor.remove(String key);
editor.apply();

এখানে সম্পাদক ভাগ করা পছন্দসই সম্পাদক।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.