ما هو أكثر المكون "مقاوم للموت" على Android؟
-
26-09-2019 - |
سؤال
أنا أبحث عن فئة الأنسب لأكون مرسلًا للمتعهدات المتزامنة التي تم استدعاؤها من أنشطتي.
أعتقد أنه يمكن أن يكون أحد هؤلاء:
- فئة فرعية من تطبيق;
- فئة فرعية من خدمة;
- خاصتي ثابتة أمور.
بالنسبة لي - من المتغير تنفيذ الخيار الثالث. لكن السؤال هو هل سيكون "مقاومًا للموت" أكثر من الخدمة أو التطبيق؟ كما أنه من المثير للاهتمام للغاية ما الذي سيعيش لفترة أطول - التطبيق أو الخدمة؟ أظن أن التطبيق يعيش طالما أن التطبيق (المهمة من حيث أندرويد) يعيش.
لذا ، فأنا بحاجة إلى تسجيل هذه الخيارات من خلال جودة "مقاومة الموت" ، لأنني أرغب في الاعتماد على أكثر شيء "ثابت".
تحديث:
في الأصل تم طرح السؤال في 2010, ، عندما كان (1) Android منصة جديدة للمطورين و (2) كانت وثائق Google غامضة للغاية (في بعض الحالات كان الأمر مضللاً) حول دورات الحياة مكونات التطبيق ودورة حياة التطبيق بأكملها.
المحلول
يجب عليك بالتأكيد استخدام أ خدمة.
السبب الرئيسي وراء هذا - Service
هل تم توثيقه الخاص دورة الحياة, ، في حين أن التطبيق لا. Application
مثال ، مثل أي من المتغيرات الثابتة ، يمكن قتلها بواسطة النظام تقريبًا في أي وقت ، لن تتلقى أي رد اتصال ولا يمكنك إيقاف هذه العملية. لذلك ، سيتم فقدان أي بيانات غير محفوظة (جميع المتغيرات الثابتة).
على الجانب الآخر، Service
لا يمكن قتلها من قبل النظام بصمت ، على الأقل onDestroy()
يجب أن تسمى الطريقة أولاً. بعد هذا رد الاتصال ، يمكنك حفظ ولايتك في بعض الذاكرة المستمرة (مثل المشتركين ، والملف ، وقاعدة البيانات ، وما إلى ذلك) واستعادة تلك الحالة في المرة القادمة التي يبدأ فيها التطبيق أو خدمتك.