后臺機制二轉載

關于iOS的后臺,以下引用一些文段進行一下腦補泉沾,請同學們大致看一下捞蚂,有個基礎,原文出處

-----------------------------------------------------------------------------------------------

OS 7中跷究,實際上APP擁有四種后臺模式姓迅,無論是哪一種后臺機制,均需要利用蘋果給予的相應后臺接口實現(xiàn)俊马。IOS7系統(tǒng)中丁存,開發(fā)者可以靈活利用多種后臺接口(API)實現(xiàn)更加智能的應用操作。

一柴我,無后臺僅推送

第 一種后臺方式為傳統(tǒng)的無后臺操作解寝,僅有蘋果推送機制,這種方式出現(xiàn)在iOS 3.x以下的大部分系統(tǒng)版本上艘儒。這個方式下聋伦,應用在按下Home鍵后即會關閉退出夫偶,其數(shù)據通過蘋果搭建的推送服務器傳輸,并不需要應用后臺運行觉增。這種方式 不太好的原因在于兵拢,每次推出后,重新進入均需要重新加載逾礁,雖然推送能夠統(tǒng)一解決數(shù)據和信息的傳輸说铃,但遇到需要頻繁進入應用(如聊天APP)的時候便會顯得 體驗不好。

二嘹履,墓碑式

第二種方式為墓碑式的后臺機制腻扇,這在iOS 4后被大量采用,也就是人們所說的偽多任務植捎。這方式相比較第一種改進的地方在于衙解,按下Home鍵至主界面后,應用隨即進入后臺焰枢,但其被凍結,并不能進行任何操作舌剂。

三济锄,智能調度后臺

第三種為系統(tǒng)智能調度的后臺,iOS 7新增的background fetch霍转, 這個后臺接口在蘋果WWDC 2013上有提及荐绝,其會根據用戶行為自動調整達到效率最優(yōu)的后臺模式,能夠處理不是很有時效性的信息獲取避消。例如一些社交低滩、新聞類的應用的后臺信息更 新,iOS系統(tǒng)便會根據應用啟動頻率岩喷、時間和當前網絡和電量的狀況來智能分配每個應用的后臺獲取頻率和啟動時長恕沫。

由于擁有該接口的應用的數(shù)據后臺 刷新操作是統(tǒng)一調度的,因此系統(tǒng)可以在一個進程里面獲得多個應用的數(shù)據纱意,類似統(tǒng)一的推送機制婶溯,這樣就能夠最大限度地省電。 不過這個方式也有一個缺點偷霉,那便是開發(fā)者不能設定數(shù)據具體什么時候更新迄委,因此這個后臺方式只能應用在一些時效性和敏感度不高的地方。

四类少,真后臺

第四種方式便是真后臺機制叙身,但iOS的真后臺與Android的后臺機制是不一樣的,為了兼顧系統(tǒng)體驗和統(tǒng)一進程管理硫狞,iOS在這上面加入了眾多的限制信轿。大致?lián)碛幸韵聨讉€后臺接口模式:

1晃痴、Background Audio,這是后臺的音頻虏两,這個很早之前便有愧旦,也是iOS設備中用得最多的后臺應用,調用這個接口可以實現(xiàn)后臺的音樂播放定罢。

2笤虫、Location Services,這是后臺的定位祖凫,系統(tǒng)會擁有統(tǒng)一頁面進行管理琼蚯。

3、VoIP惠况,后臺語音服務遭庶,類似Skype通話應用需要調用,可進行后臺的語音通話稠屠。

4峦睡、Newsstand,報刊雜志后臺自動下載更新权埠,其能夠自動實時更新榨了。

5、 Background Task? Completion攘蔽,這個接口早在iOS 4時候便擁有龙屉,其可以供任意類型的APP使用,不過在舊系統(tǒng)中满俗,這個接口的后臺限制運行時間僅為10分鐘转捕,意味著當應用退至后臺,其后臺運行僅能持續(xù)10 分鐘便會轉至休眠狀態(tài)唆垃。iOS 7中對這個接口作出了改變五芝,原來的為連續(xù)10分鐘,即不論你這10分鐘內用戶是否關閉屏幕進入休眠狀態(tài)降盹,應用仍然會在后臺等待10分鐘完結后推出与柑,而新的 改進為假如遇到關閉屏幕休眠的情況,這后臺運行的10分鐘便會跟隨一同休眠蓄坏,剩余的后臺時間將會留待用戶再一次喚醒設備才計算价捧。這樣后臺運行的時間仍然為 10分鐘,但并不連續(xù)涡戳,這樣做的優(yōu)點為省電结蟋。

如現(xiàn)在有一些詞典應用帶有后臺復制選詞功能,實際上其是利用了這個接口渔彰,如果用戶開啟詞典后并推出嵌屎,即使屏幕關閉推正,但詞典仍然在后臺運行,電量消耗還是比較大的宝惰,在iOS 7上植榕,這個問題可以得到解決。

6尼夺、 Remote Notification尊残,這是本次較大的一個改進接口,以往聊天類應用接受推送后點進去需要再收一次信息淤堵,這情況在QQ寝衫、微信等應用上最為明顯。不過擁 有了這個接口后拐邪,這情況將不復存在慰毅,以后推送將能夠直接啟動后臺任務。值得注意的是remote notification支持silent notification(靜默推送)扎阶,這樣dropbox這類同步應用可以在后臺以最節(jié)能的模式實時靜默同步了汹胃,類似布卡漫畫這種也可以推送正在追的漫 畫的新章節(jié)并在后臺靜默下載,待到下載好再給用戶發(fā)送一個本地推送东臀,用戶點開即看無需再聯(lián)網

7统台、Background Transfer Service,后臺上傳下載啡邑。iOS最接近傳統(tǒng)多任務的后臺接口,可供任意類型的app調用井赌,無時間限制谤逼。應用場景包括后臺上傳和下載數(shù)據,這使得游戲 后臺更新數(shù)據包仇穗,后臺上傳視頻等等都成為可能流部,但是正如其名字,它只能用于處理上傳下載這種傳輸類的任務纹坐,類似后臺剪切板監(jiān)控這種它就無能為力了枝冀。

--------------------------------------------------------------------------------------------------------------------------------

以下介紹一下實際操作

首先我們在工程中選擇Gapability,找到back ground mode,如圖

我們拿location updates刷新來舉例

當我們初始化CLLocationmanager之后耘子,需要額外添加這樣一句代碼

self.manger.pausesLocationUpdatesAutomatically = NO; //該模式是抵抗ios在后臺殺死程序設置果漾,iOS會根據當前手機使用狀況會自動關閉某些應用程序的后臺刷新,該語句申明不能夠被暫停谷誓,但是不一定iOS系統(tǒng)在性能不佳的情況下強制結束應用刷新

經過測試绒障,CLLocationmanager協(xié)議方法能在后臺一直被調用,此時App是比較耗電的捍歪,如果后臺擁有其他處理和運算的需求户辱,最好將位置更新觸發(fā)的操作進行多線程處理鸵钝,最好是多線程排隊處理。還有一種方法就是在AppDelegate中的生命周期函數(shù)里庐镐,在即將進入后臺的時候將CLLocationmanager的閥值降低恩商,比方說原來監(jiān)測的米級別,可以降低成千米級別

在 applicationDidEnterBackground 中加入

復制代碼

if ([CLLocationManager significantLocationChangeMonitoringAvailable])

{

[[mapCenter manager] stopUpdatingLocation];

[[mapCenter manage ] startMonitoringSignificantLocationChanges];

}

else

{

NSLog(@"Significant location change monitoring is not available.");

}

復制代碼

在applicationDidBecomeActive 中加入

復制代碼

if ([CLLocationManager significantLocationChangeMonitoringAvailable])

{

[[mapCenter manager] stopMonitoringSignificantLocationChanges];

[[mapCenter manager] startUpdatingLocation];

}

else

{

NSLog(@"Significant location change monitoring is not available.");

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末必逆,一起剝皮案震驚了整個濱河市怠堪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌末患,老刑警劉巖研叫,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異璧针,居然都是意外死亡嚷炉,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門探橱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來申屹,“玉大人,你說我怎么就攤上這事隧膏』┘ィ” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵胞枕,是天一觀的道長杆煞。 經常有香客問我,道長腐泻,這世上最難降的妖魔是什么决乎? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮派桩,結果婚禮上构诚,老公的妹妹穿的比我還像新娘。我一直安慰自己铆惑,他們只是感情好范嘱,可當我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著员魏,像睡著了一般丑蛤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上逆趋,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天盏阶,我揣著相機與錄音,去河邊找鬼闻书。 笑死名斟,一個胖子當著我的面吹牛脑慧,可吹牛的內容都是我干的。 我是一名探鬼主播砰盐,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼闷袒,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了岩梳?” 一聲冷哼從身側響起囊骤,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎冀值,沒想到半個月后也物,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡列疗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年滑蚯,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抵栈。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡告材,死狀恐怖,靈堂內的尸體忽然破棺而出古劲,到底是詐尸還是另有隱情斥赋,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布产艾,位于F島的核電站疤剑,受9級特大地震影響,放射性物質發(fā)生泄漏闷堡。R本人自食惡果不足惜骚露,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望缚窿。 院中可真熱鬧,春花似錦焰扳、人聲如沸倦零。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽扫茅。三九已至,卻和暖如春育瓜,著一層夾襖步出監(jiān)牢的瞬間葫隙,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工躏仇, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留恋脚,地道東北人腺办。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像糟描,于是被迫代替她去往敵國和親怀喉。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內容