iOS后臺長久運行

在以前,當 app 被按 home 鍵退出后,僅有最多 5 秒鐘的時間做一些保存或清理資源的工作。但是應用可以調用 UIApplication 的beginBackgroundTaskWithExpirationHandler方法,讓 app 最多有 10 分鐘的時間在后臺長久運行。這個時間可以用來做清理本地緩存,發送統計數據等工作。
示例代碼如下:

// AppDelegate.m文件
#import "AppDelegate.h"

@interface AppDelegate ()
// 程序后臺任務標志位
@property (assign, nonatomic) UIBackgroundTaskIdentifier backgroundUpdateTask;

@end

// app已經進入后臺
- (void)applicationDidEnterBackground:(UIApplication *)application {
    // 開始后臺長久運行任務
    [self beginBackgroundUpdateTask];
    
    /**
     * 添加需要后臺長久運行的任務代碼
     */
    
    // 結束后臺長久運行任務
    [self endBackgroundUpdateTask];
}

// 開始后臺長久運行任務
- (void)beginBackgroundUpdateTask {
    self.backgroundUpdateTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
        [self endBackgroundUpdateTask];
    }];
}

// 結束后臺長久運行任務
- (void)endBackgroundUpdateTask {
    [[UIApplication sharedApplication] endBackgroundTask:self.backgroundUpdateTask];
    self.backgroundUpdateTask = UIBackgroundTaskInvalid;
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,981評論 19 139
  • 自從古老的iOS4以來,當用戶點擊home建的時候,你可以使你的APP們在內存中處于suspended(掛起)狀態...
    木易林1閱讀 3,220評論 1 4
  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,251評論 4 61
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,466評論 25 708
  • 即將步入六月,天氣日漸炎熱,我們那顆火熱的愛心也在“父親的背影”主題征文活動中慢慢延展、直至融化成一股暖流。 在過...
    驛路奇奇閱讀 3,284評論 89 54