IOS允許長時間在后臺運行

IOS允許長時間在后臺運行的情況有7種:

原文鏈接:http://www.apkbus.com/android-126158-1-1.html

audio

VoIP

GPS

下載新聞

和其它附屬硬件進行通訊時

使用藍牙進行通訊時

使用藍牙共享數(shù)據(jù)時

除以上情況,程序退出時可能設置短暫運行10分鐘

讓程序退出后臺時繼續(xù)運行10分鐘

在XXAppDelegate中增加:UIBackgroundTaskIdentifier bgTask;

- (void)applicationDidEnterBackground:(UIApplication *)application

{

bgTask = [application beginBackgroundTaskWithExpirationHandler:^{

// 10分鐘后執(zhí)行這里,應該進行一些清理工作,如斷開和服務器的連接等

// ...

// stopped or ending the task outright.

[application endBackgroundTask:bgTask];

bgTask = UIBackgroundTaskInvalid;

}];

if (bgTask == UIBackgroundTaskInvalid) {

NSLog(@"failed to start background task!");

}

// Start the long-running task and return immediately.

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

// Do the work associated with the task, preferably in chunks.

NSTimeInterval timeRemain = 0;

do{

[NSThread sleepForTimeInterval:5];

if (bgTask!= UIBackgroundTaskInvalid) {

timeRemain = [application backgroundTimeRemaining];

NSLog(@"Time remaining: %f",timeRemain);

}

}while(bgTask!= UIBackgroundTaskInvalid && timeRemain > 0); // 如果改為timeRemain > 5*60,表示后臺運行5分鐘

// done!

// 如果沒到10分鐘,也可以主動關(guān)閉后臺任務,但這需要在主線程中執(zhí)行,否則會出錯

dispatch_async(dispatch_get_main_queue(), ^{

if (bgTask != UIBackgroundTaskInvalid)

{

// 和上面10分鐘后執(zhí)行的代碼一樣

// ...

// if you don't call endBackgroundTask, the OS will exit your app.

[application endBackgroundTask:bgTask];

bgTask = UIBackgroundTaskInvalid;

}

});

});

}

- (void)applicationWillEnterForeground:(UIApplication *)application

{

// 如果沒到10分鐘又打開了app,結(jié)束后臺任務

if (bgTask!=UIBackgroundTaskInvalid) {

[application endBackgroundTask:bgTask];

bgTask = UIBackgroundTaskInvalid;

}

}

復制代碼

后臺時,如果某些代碼你不希望執(zhí)行,可以加以下條件:

UIApplication *application = [UIApplication sharedApplication];

if( application.applicationState == UIApplicationStateBackground) {

return;

}

復制代碼

有的app雖然我們不允許通知,但還是會彈出消息,應該是設置了定時器,到某一時間就讓程序后臺運行一會,從服務器更新數(shù)據(jù),然后顯示出來。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容