سؤال

يستخدم تطبيقي خدمة عن بعد لتشغيل الصوت. أقوم بذلك حتى لا يمتلك أي نشاط تشغيل الصوت - يمكن للمستخدم أن يؤدي إلى تشغيل بعض الصوت من نشاط واحد، وسيستمر الصوت في اللعب أثناء التنقل حول التطبيق. ومع ذلك، أريد أن أخبر الخدمة مؤقتا أو إيقاف تشغيل الصوت عند استخدام المستخدم "إلغاء تحميل" إما عن طريق النسخ الاحتياطي أو قفل الشاشة أو ضرب المنزل. عندما كان التطبيق نشاطا واحدا، كنت أقوم بذلك في OnPause. لذلك، أعتقد أنني أبحث أساسا عن "OnPause" في مستوى التطبيق / المهمة. هل هذا الشيء موجود؟ إذا لم يكن الأمر كذلك، فما هي طريقة "أفضل الممارسات" في الحصول على إخطار بأن المهمة قد تم وضعها من قبل المستخدم إما دعم كل الطريق أو ضرب المنزل؟

هل كانت مفيدة؟

المحلول

همممم ... لسوء الحظ، أظن أنه ليس هناك إجابة سهلة هناك. أعتقد أن هذا هو السبب في أن مشغل الوسائط المدمج و Pandora يستخدم إشعارا، للسماح للمستخدم بسهولة بالعودة إلى التطبيق لجعله يصمت.

إذا كان تدفق نشاطك خطي إلى حد ما، فإن النسخ الاحتياطي من التطبيق هو نفسه النسخ الاحتياطي من النشاط الأولي.

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

يمكنك أيضا مشاهدة ل ACTION_SCREEN_OFF إذاعة Intents, ، للتعامل مع هذا السيناريو.

أنا آسف لأنني ليس لدي إجابة رصاصة فضية أفضل - ربما سيحصل شخص آخر على فكرة أفضل.

نصائح أخرى

لقد كنت في وضع مماثل إلى حد ما، وأصدر أساسا ما اقترح مارك؛ بدلا من إخطار منفصل، كان لدي ما عليك ببساطة عد الخدمة المكالمات إلى APRIVECALLBACK () واجهات برمجة التطبيقات الخاصة بي () واجهات برمجة التطبيقات التي يحتاجها كل نشاط إلى القيام به على أي حال.

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