دورة حياة النشاط/العملية - متى يتم حفظ/تحميل البيانات من/من القرص

StackOverflow https://stackoverflow.com/questions/1801500

  •  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 بإغلاق أي من الأنشطة الفردية باستخدام البيانات.

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

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