如何使用UIApplicationDidBecomeActiveNotification
?如何使用UIApplicationDidBecomeActiveNotification
我應該在viewDidLoad
還是viewWillAppear
聲明它來從後臺到前臺重新加載數據。
UIApplicationDidBecomeActiveNotification
只有當應用程序從背景到前景才被調用?
請幫忙。 謝謝。
如何使用UIApplicationDidBecomeActiveNotification
?如何使用UIApplicationDidBecomeActiveNotification
我應該在viewDidLoad
還是viewWillAppear
聲明它來從後臺到前臺重新加載數據。
UIApplicationDidBecomeActiveNotification
只有當應用程序從背景到前景才被調用?
請幫忙。 謝謝。
有時候當你需要從後臺就醒在您的視圖控制器一些行動了(如果你輸入的背景屏幕上的這個視圖控制器),它是有UIApplicationDidBecomeActiveNotification的監聽器有用。在這樣醒來viewWillAppear將不會被觸發!使用
例子:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(someMethod) name:UIApplicationDidBecomeActiveNotification object:nil];
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidBecomeActiveNotification object:nil];
}
- (void)someMethod
{
<YOUR CODE AT WAKE UP FROM BACKGROUND>
}
當然,你也可以實現你需要在你的應用程序委託類的生命週期。
如果您的應用因電話或推送通知而中斷,您會收到此通知。通常,如果您的應用程序在中斷後在屏幕上激活。
您可以註冊任何類,在應用程序將作爲此通知的觀察者處於活動狀態時加載到內存中。
使用下面的代碼在viewDidLoad
:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(someMethod:)
name:UIApplicationDidBecomeActiveNotification object:nil];
使用someMethod
來處理此通知。而且不要忘了刪除dealloc
這個類作爲觀察員:
[[NSNotificationCenter defaultCenter] removeObserver:self
name:UIApplicationDidBecomeActiveNotification
object:nil];
一般情況下,在viewWillAppear中添加一般類型的觀察者(不一定在這種情況下),並在viewWillDisappear中刪除,因爲在很多情況下,當控制器不在時,您不需要監視事件屏幕。有時它會導致錯誤。 – malex
你能告訴一個會導致錯誤的情況嗎? –
提到的錯誤(=隱含問題)出現在我監控的許多項目中。這不是系統問題 - 它是架構問題。通常開發人員(尤其是初級開發人員)瞭解屏幕上的工作週期。但是他們會改變viewWill(Did)消失的東西,並忘記在那之後viewController仍然可以活着(例如在標籤欄中),並且繼續接收現在在場景後面處理的通知。 – malex
的OP詢問,當應用程序被轉到後臺發射系統通知,然後再前景化。旨在處理這種情況的通知是UIApplicationDidEnterBackgroundNotification和UIApplicationWillEnterForegroundNotification。如果您想要發佈針對更廣泛情況的通知,例如當您收到系統通知時,請撥打電話,發送短信,或者向上滑動控制面板,以及放棄背景,然後您需要UIApplicationWillResignActiveNotification和UIApplicationDidBecomeActiveNotification。重要的是要認識到這些是不同的,因爲如果您的應用程序是後臺,您可能只需要做出反應,而不是其他情況。
感謝您的回答。 – Annu
是的,它適合我。非常感謝。 ü救了我:) – Annu