استخدام أساليب الخلفية / المقدمة في أبديليغات
-
27-10-2019 - |
سؤال
أخطط لتنفيذ مهام متعددة في تطبيقي.أستطيع أن أرى العديد من الطرق هنا للقيام بذلك في AppDelegate
مثل applicationWillResignActive
, applicationDidEnterBackground
, applicationWillEnterForeground
, ...
لكن....أنا لا أرى الطريقة التي ينبغي استخدامها ، ولا لماذا هم ليسوا في فيوكونترولر...ولا ما هم هنا من أجله.
أعني :عندما يدخل التطبيق في الخلفية ، وأنا لا أعرف على أي عرض المستخدم الخاص بي هو.والعودة, عندما يأتي التطبيق في المقدمة, كيف لي أن أعرف ما يجب القيام به وما يمكن أن أسميه, لتحديث طريقة العرض على سبيل المثال ?
كنت قد فهمت إذا كانت تلك الأساليب حيث في كل وحدة تحكم عرض ، ولكن هنا ، وأنا لا أرى ما يمكن استخدامها ل بطريقة ملموسة...
هل يمكنك مساعدتي في فهم طريقة تنفيذ الأشياء في تلك الأساليب ?
المحلول
كل كائن يحصل على UIApplicationDidEnterBackgroundNotification
إعلام عندما يذهب التطبيق في الخلفية.لذلك لتشغيل بعض التعليمات البرمجية عندما يذهب التطبيق في الخلفية ، لديك فقط للاستماع إلى هذا الإخطار حيث تريد :
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(appHasGoneInBackground:)
name:UIApplicationDidEnterBackgroundNotification
object:nil];
لا تنس إطلاق سراح المستمع عندما لا تحتاج إلى الاستماع إليه بعد الآن :
[[NSNotificationCenter defaultCenter] removeObserver:self];
وأفضل من أفضل ، يمكنك أن تلعب بنفس الطريقة مع الإخطارات التالية :
UIApplicationDidEnterBackgroundNotification
UIApplicationWillEnterForegroundNotification
UIApplicationWillResignActiveNotification
UIApplicationDidBecomeActiveNotification
نصائح أخرى
إنهم ليسوا في أي من وحدات التحكم في العرض لأن iOS يتبنى نمط تصميم "مفوض" ، حيث يمكنك التأكد من أن الطريقة ستطلق على فئة (في هذه الحالة ، مفوض التطبيق لتطبيقك) عند الحاجة.
كعملية تعلم ، لماذا لا تضع NSLog في تلك الأساليب لترى متى يتم طردهم؟ Genacodicetagpre