دورة حياة النشاط/العملية - متى يتم حفظ/تحميل البيانات من/من القرص
-
05-07-2019 - |
سؤال
يتكون تطبيقي من نشاطين ، A و B. أنا أفكر في تسلسل الخطوات:
- بدأ النشاط أ.
- A إطلاق B [A متوقف مؤقتًا ، B قيد التشغيل].
- يطلق B نية خريطة [A و B على حد سواء توقفت الآن].
يستخدم المستخدم الآن تطبيق الخرائط ويقرر النظام أنه يحتاج إلى مزيد من الذاكرة. يمكن للنظام قتل واحد فقط من أنشطتي للذاكرة ، أم أنها ستقتل دائمًا الكل الأنشطة في "معالجة" في هذا الوضع؟
يشترك كلا النشاطين في بعض البيانات الثابتة مثل:
class Data {
public static String mName;
public void save() {
// write to file: mName;
}
public void load() {
// mName = read from file;
}
}
ActivityA.mTextView.setText(Data.mName);
ActivityB.mListView.addText(Data.mName);
لذلك عندما يحصل أي نشاط في تطبيقي على onSaveInstanceBundLesate () ، أدعو Data.save () لكتابته على القرص. الآن السؤال هو ، بطريقة النشاط onCreate () ، هل يجب أن أتحقق من معرفة ما إذا كان data.mname == null ، وإذا كان الأمر كذلك ، افترض أن النشاط يعود من حالة القتل ، ومحاولة الاستعادة من القرص مرة أخرى؟ أنا غير واضح متى يجب القيام بهذا الاستعادة ، مع الأخذ في الاعتبار النشاط A أو لا يزال على قيد الحياة وما إلى ذلك - ولا أريد أن أفسد الحالة إذا كان النشاط A لا يزال على قيد الحياة ولكن B يعود من حالة قتل ،
شكرًا
شكرًا
المحلول
ربما يكون الحل الأفضل هو نقل بياناتك الثابتة إلى خدمة ما. وبهذه الطريقة ، يمكن حفظ البيانات واستعادتها عندما يقوم Android بإغلاق الخدمة بدلاً من أن يقوم Android بإغلاق أي من الأنشطة الفردية باستخدام البيانات.
دون استخدام خدمة (أو بالتناوب مزود محتوى ، أو حتى التطبيق المتجاوز على الرغم من أن ذلك يبدو أنه مستهجن) ، يجب عليك إدارة دورة الحياة بنفسك ، والتي يمكن أن تكون صعبة.