Android: توقف الخدمات والإنذارات عند انتهاء التطبيق
-
25-09-2019 - |
سؤال
لدي تطبيق يتكون من عدة أنشطة. عندما يبدأ التطبيق ، يتم جدولة بعض الإنذارات باستخدام AlarmManager
وبدأت بعض الخدمات:
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
a.setInexactRepeating(...)
....
أود أن أعرف أي طريقة ضمان إيقاف كل خدمة ويتم عدم جدولة كل إنذار عندما يخرج المستخدم من التطبيق.
المشكلة هي أن المستخدم يمكنه ترك التطبيق من أنشطة مختلفة ، ولا أحب فكرة تجاوز onDestroy
الطريقة في كل نشاط. هل هناك أي معروف Intent
يمكنني الاستلام عندما ينتهي الطلب؟
لقد وجدت أيضًا أن تطبيق Android يمكن أن يحتوي على فصل يمتد منه Application
, ، مع onTerminate
طريقة:
public class MyApplication extends Application {
@Override
public void onTerminate() {
...
}
}
لكن الوثائق واضحة للغاية: "لا تعتمد أبدًا على هذه الطريقة التي يتم استدعاؤها ؛ في كثير من الحالات ، سيتم قتل عملية تقديم الطلبات غير الضرورية بواسطة kernel دون تنفيذ أي رمز تطبيق"
أي اقتراح هو محل تقدير كبير.
المحلول
أود أن أعرف أي طريقة لضمان إيقاف كل خدمة وأن كل إنذار غير محدد عندما يخرج المستخدم من التطبيق.
لا يوجد شيء مثل "يخرج المستخدم من التطبيق" في Android.
هل هناك أي نية معروفة يمكنني تلقيها عندما ينتهي الطلب؟
لا.
لقد وجدت أيضًا أن تطبيق Android يمكن أن يحتوي على فئة تمتد من التطبيق ، مع طريقة Onterminate
سيتم استدعاء هذا ، في كثير من الحالات ، في وقت ما بعد عدم وجود مكونات قيد التشغيل. في حالتك ، هناك مكونات تشغيل (الخدمات).
لكن الوثائق واضحة للغاية: "لا تعتمد أبدًا على هذه الطريقة التي يتم استدعاؤها ؛ في كثير من الحالات ، سيتم قتل عملية التقديم غير الضرورية بواسطة kernel دون تنفيذ أي رمز تطبيق"
الحالة الوحيدة التي أعرفها متى لن يتم استدعاؤها هي إذا تم إنهاء العملية ، وفي هذه الحالة سيتم القضاء على خدمتك أيضًا ، على الرغم من أن الإنذارات المجدولة لن يتم ذلك.