ios 開啟後臺任務,beginBackgroundTaskWithExpirationHandler 使用細節問題備忘
app進入後臺,會停止所有執行緒;需要在applicationDidEnterBackground中呼叫beginBackgroundTaskWithExpirationHandler申請更多的app執行時間,以便結束某些任務,如
AVAssetWriter的(ios中當AVAssetWriter處於AVAssetWriterStatusWriting狀態時,若進入了後臺狀態將導致後續操作失敗,詳情檢視startWriting的註釋說明)
使用記錄:
1,
可以在 AppDelegate中的applicationDidEnterBackground 中申請
由於在 AppDelegate 很多時候不方便呼叫結束指定工作的方法 也可以通過
[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(applicationDidEnterBackground:)name:UIApplicationDidEnterBackgroundNotificationobject:nil];
在合適的地方新增委託2,
根據網上資料添加了委託
- (void)applicationDidEnterBackground:(UIApplication *)application { _backtaskIdentifier = [application beginBackgroundTaskWithExpirationHandler:^(void){ if (_backtaskIdentifier!=UIBackgroundTaskInvalid) { [[UIApplication sharedApplication] endBackgroundTask:_backtaskIdentifier]; _backtaskIdentifier = UIBackgroundTaskInvalid; } }]; }
結果呼叫beginBackgroundTaskWithExpirationHandler報錯:
NSInvalidArgumentException', reason: '-[NSConcreteNotification beginBackgroundTaskWithExpirationHandler:]: unrecognized selector sent to instance
其中[NSConcreteNotification beginBackgroundTaskWithExpirationHandler:] 明顯有問題,
原因是此處的引數application並非 uiapplication型別,需要將程式碼改為
_backtaskIdentifier = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^(void){
if (_backtaskIdentifier!=UIBackgroundTaskInvalid) {
[[UIApplication sharedApplication] endBackgroundTask:_backtaskIdentifier];
_backtaskIdentifier = UIBackgroundTaskInvalid;
}
}];
3, 一開始沒想明白beginBackgroundTaskWithExpirationHandler 的用法,經過測試才明白,只要呼叫了此函式系統就會允許app的所有執行緒繼續執行,直到任務結束(1,[[UIApplicationsharedApplication]backgroundTimeRemaining] 的時間結束 2,呼叫endBackgroundTask)
相關推薦
ios 開啟後臺任務,beginBackgroundTaskWithExpirationHandler 使用細節問題備忘
app進入後臺,會停止所有執行緒;需要在applicationDidEnterBackground中呼叫beginBackgroundTaskWithExpirationHandler申請更多的app執行時間,以便結束某些任務,如 AVAssetWriter的(ios中當A
關於std::thread以及std::condition_variable的一些細節備忘
tor enc action sim cep 關於 pro swap not 也算是看過不少多線程相關的資料了,但是一直對於其中的一些細節沒有太好的把握,比如std::thread線程真正開始運行的時機,比如join、detch等真正的作用。 跟著《Cplusplus
轉載大牛所寫內容,MAC 訊息驗證編碼的使用和相關概念非我所寫,我只是備忘檢視,並加註解一些紅色字型內容
資訊保安基礎知識 MAC訊息驗證碼及金鑰管理問題 版權宣告:本文為博主原創文章,未經博主允許不得轉載。 原文地址https://blog.csdn.net/a359680405/article/details/41518685 &n
Linux下清除快取 drop_caches,sysctl(備忘)
1. 用命令 free -m 檢視一下記憶體的使用情況:然後清除快取後再來檢視一下記憶體的使用情況:前後對比可發現,快取由之前的110M縮小到了25M,效果比較明顯。2. 下面說一下 drop_caches:清空 pagecache:syncecho 1 > /proc
【nginx】把自己的nginx配置貼上來,做個備忘
#user nobody; #執行使用者 worker_processes 1; #啟動程序,通常設定成和CPU數量相等 #全域性錯誤日誌及錯誤記錄型別 #錯誤型別 [ debug | info | notice | warn | error | crit ]
IOS 後臺掛起程式 當程式到後臺後,繼續完成定位任務
// 當應用程式掉到後臺時,執行該方法 - (void)applicationDidEnterBackground:(UIApplication *)application { } 當一個 iOS 應用被送到後臺,它的主執行緒會被暫停。你用 NSThre
背水一戰 Windows 10 (119) - 後臺任務: 後臺下載任務(任務分組,組完成後觸發後臺任務)
mode present llb ner tina when http 對象 pat [源碼下載] 背水一戰 Windows 10 (119) - 後臺任務: 後臺下載任務(任務分組,組完成後觸發後臺任務) 作者:webabcd介紹背水一戰 Windows 10 之 後
背水一戰 Windows 10 (118) - 後臺任務: 後臺下載任務(任務分組,並行或串行執行,組完成後通知)
style 如何 abs bin html5 only emp void local [源碼下載] 背水一戰 Windows 10 (118) - 後臺任務: 後臺下載任務(任務分組,並行或串行執行,組完成後通知) 作者:webabcd介紹背水一戰 Windows 10
關於ios 11.X後微信wifi認證,無法開啟微信,無法重定向到weixin:開頭網址等問題的處理
環境: 認證路由ROS ,認證後臺python django ios11系統 更新以來先後出現微信wifi認證,無法開啟微信,無法重定向到weixin:開頭網址等相關問題。 經過問題的收集,查詢到網路上此類問題普遍存在 收集到的有如下網址,市面上大多數廠商在使用
mxnet-等待後臺任務完成,後臺完成自動並行化
n = 10 a = mx.nd.ones((1000,1000)) b = mx.nd.ones((6000,6000), gpu_device) tic = time.time() c = do(a, n) wait(c) print('Time to finish the CPU workload: %
關於iOS的後臺下載和斷點續傳,說一說自己的理解
http://blog.csdn.net/openglnewbee/article/details/53887308 首先,後臺下載和斷點續傳是兩件事;這裡放在一起說是為了圖個方便,實際二者在技術實現上沒有什麼關聯。 目前我們的下載實現一般都是基於nsurlsession
python celery捕捉unicode字元型別的錯誤,導致後臺任務失敗的解決方案
背景 公司有一個用django(1.8.0)寫的運維平臺,目的用於申請阿里雲和騰訊雲機器;申請雲上機器採用後臺非同步的方式,框架採用redis+celery(3.1.18),但最近發現一個問題,就是有時候申請騰訊雲機器的後臺任務因為沒有捕捉到某些異常,導致任務會
定期iOS的後臺位置更新-- 相關資料收集,待有時間進行整理
1,材料一:(http://codego.net/610454/) 我正在寫,需要具有高精確度和低頻率的後臺位置更新的應用程式。該解決方案似乎是一個後臺任務的啟動位置管理器的更新,然後關機。這個問題已經被問過: 我如何獲得一個後臺位置更新每隔n分鐘在我的iPh
iOS下的後臺任務實現方法
後臺任務 場景一 地圖後臺定位 場景二 後臺播放音樂 場景三 後臺 更新推送內容 場景四 voip IP電話 視訊通話 關於Background Fet
IOS後臺常駐,實現後臺下載
上班快一個月了,好久沒有更新過部落格,正好公司做的專案讓解決後臺下載的問題,在網上有查到一般都是通過後臺播放無聲或者VOIPSocket防止程式終結,但是沒有相關功能會有被App Store拒絕上架的可能,我僅僅想完成一個後臺下載。 我的Xcode版本7.
後臺任務: 後臺下載任務(任務分組,並行或序列執行,組完成後通知)
/* * 演示後臺下載任務的分組,以及如何設定組內任務是並行執行還是序列執行,以及組任務全部完成後如何 toast 或 tile 通知) * * BackgroundTransferGroup - 後臺下載任務的分組物件 * static BackgroundTransferGr
IOS常用延遲呼叫,後臺呼叫,主執行緒呼叫方法
/延遲呼叫 [selfperformSelector:@selector(doSomeThing:) withObject:nilafterDelay:1.0f]; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int
備忘:CentOS-7 使用systemctrl 管理的服務,檔案開啟數上限1024要改
改要 檔案 中 /etc/systemd/system.conf 以下兩個值 DefaultLimitNOFILE=1024000 DefaultLimitNPROC=1024000 並且要重啟機器 --- 反正 我是直接重啟機器 如不改,systemctrl sta
ios 後臺下載,app退出再進入可以斷點續傳 NSURLSessionDownloadTask(一)
想了解,多檔案下載和管理,看這一篇文章,是在這基礎上再次封裝的:點選開啟連結 使用NSURLSessionDataTask,進行封裝下載的,看這篇文章 點選開啟連結 使用: #import "ViewController.h" #import "BackgroundDow
ios程式後臺執行時,當有訊息推送過來,如何修改程式角標上是數字
這個得在發訊息的伺服器中給你累加,客戶端只是被動的顯示applicationIconBadgeNumber值。當客戶端收到推送訊息時要告訴伺服器端,伺服器將applicationIconBadgeNumber置為0,當在後臺或未開啟時,不能告訴伺服器端,伺服器每發一條,就會