2
當應用程序進入後臺狀態時,我需要在後檯安排任務。 我必須這樣做才能每x次調用一次遠程服務,然後在遠程服務發生某些事件時顯示本地通知。 (我知道這看起來像RPN,的確是這樣,但由於某種原因,我無法使用PRM)當應用程序進入後臺時運行後臺線程
我試過這段代碼:
- (void)applicationDidEnterBackground:(UIApplication *)application{
[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^(void){
remoteServiceCallThread = [[NSThread alloc] initWithTarget:self selector:@selector(doRemoteCall:) object:nil];
[remoteServiceCallThread start];
}];
}
- (void)applicationWillEnterForeground:(UIApplication *)application{
[remoteServiceCallThread cancel];
}
我把斷點在doRemoteCall選擇,把不管用。
也許我的方法不是最好的。如果你有任何其他手段像我描述的那樣做這個操作,我會接受它。
謝謝。
謝謝你的解釋。但是這並不能告訴我如何在應用程序不在前臺時設計我的解決方案來運行後臺進程。 –
把代碼放在'beginBackgroundTaskWithExpirationHandler'後面,它會在應用程序通知系統需要處理後臺操作時處理。 'beginBackgroundTaskWithExpirationHandler'可能在任何地方被調用,不僅在'applicationDidEnterBackground',這樣你可以保護你的數據源操作不被終止。 –