Android: توقف الخدمات والإنذارات عند انتهاء التطبيق

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

  •  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 دون تنفيذ أي رمز تطبيق"

الحالة الوحيدة التي أعرفها متى لن يتم استدعاؤها هي إذا تم إنهاء العملية ، وفي هذه الحالة سيتم القضاء على خدمتك أيضًا ، على الرغم من أن الإنذارات المجدولة لن يتم ذلك.

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