سؤال

يمكنني إنشاء ملف تفضيلات جديد عن طريق الاتصال context.getSharedPreferences (اسم السلسلة ، وضع int), ، وضع بعض القيم في محرر التفضيلات التي تم إرجاعها ، والالتزام. ومع ذلك ، لا أرى واجهة في API لإزالة الملف الذي تم إنشاؤه عندما لم أعد بحاجة إليه. لقد حاولت context.deletefile (اسم السلسلة), ، يمر في نفس الشيء name حجة من الأعلى ، ولكن هذا يعود false, ، مما يشير إلى أن الملف لم يتم حذفه بالفعل. أنا أستخدم mode_private ، إذا كان ذلك يحدث فرقًا.

تصفح المصدر تنفيذ السياق للمحرر لا تكشف أي أدلة أيضًا ، بقدر ما أستطيع أن أقول.

أيه أفكار؟ الخلفية هنا هي أنني أسمح للمستخدمين بحفظ نسخ من تفضيلاتهم "الحالية" حتى يتمكنوا من استعادة الإعدادات المحفوظة مسبقًا. عندما لا يريدون هذه الإعدادات بعد الآن ، أريد إزالة ملف التفضيلات المحفوظة حتى لا يستغرق المساحة. في الوقت الحالي ، أفضل ما يمكنني فعله هو edit().clear().commit على الملف ، الذي أعتقد أنه سيزيل معظم المحتويات. ليست جيدة مثل الحذف ، رغم ذلك.

هل كانت مفيدة؟

المحلول

لقد جربت context.deletefile (اسم السلسلة) ، مرورًا في نفس الاسم الوسيطة من الأعلى ، ولكن هذا يعيد خطأ ، مما يشير إلى أن الملف لم يتم حذفه بالفعل.

ذلك لأن الملف ليس في هذا الدليل.

الخلفية هنا هي أنني أسمح للمستخدمين بحفظ نسخ من تفضيلاتهم "الحالية" حتى يتمكنوا من استعادة الإعدادات المحفوظة مسبقًا.

كيف تصنع النسخة؟

من وجهة نظر واجهات برمجة التطبيقات المدعومة ، من الأفضل لك تقديمها SharedPreferences كن الإعدادات النشطة الحالية ، وقم بإجراء نسخ احتياطية واستعادة إلى تنسيق الملف الخاص بك في الدليل الخاص بك.

إذا كنت لا تتوافق مع هذا الاتجاه ، فسيكون الملف ملف XML في ../shared_prefs دليل بالنسبة إلى getFilesDir(), ، حتى تتمكن من إنشاء كائن ملف مناسب وحذفه بهذه الطريقة. ومع ذلك ، ضع في اعتبارك أن Android يمكن أن يغير هذا الموقع لاحقًا ، أو حتى تغيير نموذج التخزين ، وبالتالي يمكنك مواجهة مشاكل التوافق في المستقبل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top