詳解在IOS后臺執(zhí)行 轉(zhuǎn)載▼

IOS開發(fā)之----詳解在IOS后臺執(zhí)行 ?

文一

我從蘋果文檔中得知廷雅,一般的應(yīng)用在進(jìn)入后臺的時候可以獲取一定時間來運(yùn)行相關(guān)任務(wù)耗美,也就是說可以在后臺運(yùn)行一小段時間。

還有三種類型的可以運(yùn)行在后以航缀,

1.音樂

2.location

3.voip

文二

在IOS后臺執(zhí)行是本文要介紹的內(nèi)容商架,大多數(shù)應(yīng)用程序進(jìn)入后臺狀態(tài)不久后轉(zhuǎn)入暫停狀態(tài)。在這種狀態(tài)下芥玉,應(yīng)用程序不執(zhí)行任何代碼蛇摸,并有可能在任意時候從內(nèi)存中刪除。應(yīng)用程序提供特定的服務(wù)灿巧,用戶可以請求后臺執(zhí)行時間赶袄,以提供這些服務(wù)。

判斷是否支持多線程

UIDevice* device = [UIDevice currentDevice];

BOOL backgroundSupported = NO;

if ([device respondsToSelector:@selector(isMultitaskingSupported)])

backgroundSupported = device.multitaskingSupported;

聲明你需要的后臺任務(wù)

Info.plist中添加UIBackgroundModes鍵值砸烦,它包含一個或多個string的值弃鸦,包括

audio:在后臺提供聲音播放功能绞吁,包括音頻流和播放視頻時的聲音

location:在后臺可以保持用戶的位置信息

voip:在后臺使用VOIP功能

前面的每個value讓系統(tǒng)知道你的應(yīng)用程序應(yīng)該在適當(dāng)?shù)臅r候被喚醒幢痘。例如,一個應(yīng)用程序家破,開始播放音樂颜说,然后移動到后臺仍然需要執(zhí)行時間,以填補(bǔ)音頻輸出緩沖區(qū)汰聋。添加audio鍵用來告訴系統(tǒng)框架门粪,需要繼續(xù)播放音頻,并且可以在合適的時間間隔下回調(diào)應(yīng)用程序烹困;如果應(yīng)用程序不包括此項(xiàng)玄妈,任何音頻播放在移到后臺后將停止運(yùn)行。

除了添加鍵值的方法髓梅,IOS還提供了兩種途徑使應(yīng)用程序在后臺工作:

Task completion—應(yīng)用程序可以向系統(tǒng)申請額外的時間去完成給定的任務(wù)

Local notifications—應(yīng)用程序可以預(yù)先安排時間執(zhí)行l(wèi)ocal notifications 傳遞

文三

如何讓程序后臺播放音樂

http://developer.apple.com/library/ios/#qa/qa1668/_index.html

文四

如果你的應(yīng)用程序需要后臺運(yùn)行拟蜻,可以使用以下方法:

1。應(yīng)用程序可以請求一個有限的時間內(nèi)完成一些重要任務(wù)枯饿。

2酝锅。應(yīng)用程序可以聲明為支持特定服務(wù)需要定期后臺執(zhí)行時間。

3奢方。應(yīng)用程序可以使用本地生成用戶在指定的時間的警報(bào)搔扁,應(yīng)用程序正在運(yùn)行與否的通知爸舒。

文五

后臺運(yùn)行被第一次提到

http://developer.apple.com/library/ios/#releasenotes/General/WhatsNewIniPhoneOS/Articles/iPhoneOS4.html#//apple_ref/doc/uid/TP40009559-SW1

文六

后臺運(yùn)行官方文檔

http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html#//apple_ref/doc/uid/TP40007072-CH4-SW3

在IOS后臺執(zhí)行是本文要介紹的內(nèi)容,大多數(shù)應(yīng)用程序進(jìn)入后臺狀態(tài)不久后轉(zhuǎn)入暫停狀態(tài)稿蹲。在這種狀態(tài)下扭勉,應(yīng)用程序不執(zhí)行任何代碼,并有可能在任意時候從內(nèi)存中刪除苛聘。應(yīng)用程序提供特定的服務(wù)剖效,用戶可以請求后臺執(zhí)行時間,以提供這些服務(wù)焰盗。

判斷是否支持多線程

UIDevice* device = [UIDevice currentDevice];

BOOL backgroundSupported = NO;

if ([device respondsToSelector:@selector(isMultitaskingSupported)])

backgroundSupported = device.multitaskingSupported;

聲明你需要的后臺任務(wù)

Info.plist中添加UIBackgroundModes鍵值璧尸,它包含一個或多個string的值,包括

audio:在后臺提供聲音播放功能熬拒,包括音頻流和播放視頻時的聲音

location:在后臺可以保持用戶的位置信息

voip:在后臺使用VOIP功能

前面的每個value讓系統(tǒng)知道你的應(yīng)用程序應(yīng)該在適當(dāng)?shù)臅r候被喚醒爷光。例如,一個應(yīng)用程序澎粟,開始播放音樂蛀序,然后移動到后臺仍然需要執(zhí)行時間,以填補(bǔ)音頻輸出緩沖區(qū)活烙。添加audio鍵用來告訴系統(tǒng)框架徐裸,需要繼續(xù)播放音頻,并且可以在合適的時間間隔下回調(diào)應(yīng)用程序啸盏;如果應(yīng)用程序不包括此項(xiàng)重贺,任何音頻播放在移到后臺后將停止運(yùn)行。

除了添加鍵值的方法回懦,IOS還提供了兩種途徑使應(yīng)用程序在后臺工作:

Task completion—應(yīng)用程序可以向系統(tǒng)申請額外的時間去完成給定的任務(wù)

Local notifications—應(yīng)用程序可以預(yù)先安排時間執(zhí)行l(wèi)ocal notifications 傳遞

實(shí)現(xiàn)長時間的后臺任務(wù)

應(yīng)用程序可以請求在后臺運(yùn)行以實(shí)現(xiàn)特殊的服務(wù)气笙。這些應(yīng)用程序并不連續(xù)的運(yùn)行,但是會被系統(tǒng)框架在合適的時間喚醒怯晕,以實(shí)現(xiàn)這些服務(wù)

1潜圃、 追蹤用戶位置:略

2、在后臺播放音頻:

添加UIBackgroundModes中audio值舟茶,注冊后臺音頻應(yīng)用谭期。這個值使得應(yīng)用程序可以在后臺使用可聽的背景,如音樂播放或者音頻流應(yīng)用吧凉。對于支持音頻和視頻功能的應(yīng)用程序也可以添加該值以保證可以繼續(xù)持續(xù)的運(yùn)行流隧出。

當(dāng)audio值設(shè)置后,當(dāng)你的應(yīng)用程序進(jìn)入后臺后客燕,系統(tǒng)的多媒體框架會自動阻止它被掛斷鸳劳,但是,如果應(yīng)用程序停止播放音頻或者視頻也搓,系統(tǒng)將掛斷應(yīng)用程序赏廓。

當(dāng)你的應(yīng)用程序在后臺時涵紊,你可以執(zhí)行任意的系統(tǒng)音頻框架去初始化后臺音頻。你的應(yīng)用程序在后臺時應(yīng)該限制自身幔摸,使其執(zhí)行與工作相關(guān)的代碼摸柄,不能執(zhí)行任何與播放內(nèi)容無關(guān)的任務(wù)

由于有多個應(yīng)用程序支持音頻,前臺的應(yīng)用程序始終允許播放音頻既忆,后臺的應(yīng)用程序也被允許播放一些音頻內(nèi)容驱负,這取決于audio session object的設(shè)置。應(yīng)用程序應(yīng)該始終設(shè)置它們的audio session object患雇,并小心的處理其他類型的音頻相關(guān)notifications和中斷跃脊。詳見audio session programming guide。

3苛吱、實(shí)現(xiàn)VOIP應(yīng)用:

VOIP程序需要穩(wěn)定的網(wǎng)絡(luò)去連接和它相關(guān)的服務(wù)酪术,這樣它才能接到來電和其他相關(guān)的數(shù)據(jù)。系統(tǒng)允許VOIP程序被掛斷并提供組件去監(jiān)聽它們的sockets翠储,而不是在任意時候都處于喚醒狀態(tài)绘雁。設(shè)置VOIP應(yīng)用程序如下:

A、 添加UIBackgroundModes中的VOIP鍵值

B援所、 為VOIP設(shè)置一個應(yīng)用程序socket

C庐舟、在移出后臺之前,調(diào)用setKeepAliveTimeout:handler:方法去建立一個定期執(zhí)行的handler住拭,你的應(yīng)用程序可以運(yùn)行這個handler來保持服務(wù)的連接挪略。

D、 設(shè)置你的audio session去處理這種切換

釋義:

A废酷、大多數(shù)VOIP應(yīng)用需要設(shè)置后臺audio 應(yīng)用去傳遞音頻瘟檩,因此你應(yīng)該設(shè)置audio 和voip兩個鍵值。

B澈蟆、為了使應(yīng)用程序在后臺時保持穩(wěn)定的連接,你必須tag你的主通訊socket專門應(yīng)用于VOIP萎庭,tagging這個socket來告訴系統(tǒng)晌区,它必須在你的應(yīng)用程序中斷時接管這個socket芯咧。這個切換本身對于你的應(yīng)用程序時透明的,當(dāng)新的數(shù)據(jù)到達(dá)socket的時候寥闪,系統(tǒng)會喚醒應(yīng)用程序,并將socket的控制權(quán)返回給應(yīng)用程序磨淌,這樣應(yīng)用程序就可以處理新來的數(shù)據(jù)疲憋。

你只需要tag用于voip服務(wù)的socket,這個socket用來接收來電或者其他相關(guān)的數(shù)據(jù)來保持你的VOIP服務(wù)的連接梁只。根據(jù)收到的信息缚柳,這個socket要決定下一步的動作埃脏。比如一個來電,你會想彈出一個本地的通知來告知用戶秋忙;對于其他不是那么關(guān)鍵的數(shù)據(jù)彩掐,你可能會想悄悄的處理這些數(shù)據(jù)并讓系統(tǒng)將應(yīng)用程序重新中斷。

在IOS中灰追,sockets是用流或者更高級的結(jié)構(gòu)堵幽,設(shè)置一個VOIP的socket,你只需要在通常的設(shè)置中添加一個特殊的key來標(biāo)明這個接口是用于連接VOIP服務(wù)的弹澎,下表列出了流的接口和設(shè)置:

設(shè)置流接口用于voip

接口

設(shè)置

NSInputStream 和NSOutputStream

對于 Cocoa streams, 使用 setProperty:forKey: 方法添加

NSStreamNetworkServiceType

屬性給

stream.

改屬性的值設(shè)為

NSStreamNetworkServiceTypeVoIP.

NSURLRequest

對于 URL loading system, 使用 setNetworkServiceType:

method of your NSMutableURLRequest object to set the network service

type of the request. The service type should be set to

NSURLNetworkServiceTypeVoIP.

CFReadStreamRef和CFWriteStreamRef

For Core Foundation streams, use the CFReadStreamSetProperty or

CFWriteStreamSetProperty function to add the kCFStreamNetwork-

ServiceType property to the stream. The value for this property should be

set to kCFStreamNetworkServiceTypeVoIP.

(注意:當(dāng)設(shè)置socket的時候,你需要在你的主信號通道中設(shè)置合適的service type key朴下。當(dāng)設(shè)置聲道時,不需要設(shè)置這個key)

由于苦蒿,VOIP應(yīng)用程序需要一直運(yùn)行以確保收到來電桐猬,所以如果程序通過一個非零的exit code退出,系統(tǒng)將自動重啟這個應(yīng)用程序(這種退出方式可以發(fā)生在內(nèi)存壓力大時終止程序運(yùn)行)刽肠。盡管如此溃肪,中斷應(yīng)用程序會release所有的sockets,包括那個用于連接voip 服務(wù)的socket音五。因此惫撰,當(dāng)程序運(yùn)行時,它需要一直從頭創(chuàng)建socket躺涝。

C厨钻、為了防止斷連,voip程序需要定期被喚醒去檢查它的服務(wù)坚嗜。為了容易實(shí)現(xiàn)這個行為夯膀,IOS通過使用(UIApplication setKeepAliveTimeout:handler:)方法建立一個特殊的句柄。你可以在applicationDidEnterBackground方法中建立該句柄苍蔬。一旦建立诱建,系統(tǒng)至少會在超時之前調(diào)用該句柄一次,來喚醒你的應(yīng)用程序碟绑。

這個keep-alive handler在后臺執(zhí)行俺猿,必須盡快的返回參數(shù),它有最多30秒的時間來執(zhí)行所需的任務(wù)格仲,如果這段時間內(nèi)句柄沒有返回押袍,那么系統(tǒng)將終止應(yīng)用程序。

當(dāng)你建立了handler之后凯肋,確定應(yīng)用程序所需的最大超時谊惭。系統(tǒng)保證會在最大超時之前調(diào)用handler,但是這個時間是不確定的,所以你的handler必須在你申明的超時之前做好執(zhí)行程序的準(zhǔn)備圈盔。

D豹芯、設(shè)置audio session,詳見Audio Session Programming Guide.

在后臺完成有限長度的任務(wù)

在被終止之前的任意時間,應(yīng)用程序會調(diào)用beginBackgroundTaskWithExpirationHandler:方法讓系統(tǒng)給出額外的時間來完成一些需要在后臺長時間執(zhí)行的任務(wù)药磺。(UIApplication的backgroundTimeRemaining屬性包含程序運(yùn)行的總時間)

可以使用task completion去保證那些比較重要但是需要長時間運(yùn)行的程序不會由于用戶切入后臺而突然關(guān)閉告组。比如,你可以用這項(xiàng)功能來將用戶的信息保存到disk上或者從網(wǎng)絡(luò)下載一個重要的文件癌佩。有兩種方式來初始化這樣的任務(wù):

1木缝、將長時間運(yùn)行的重要任務(wù)用beginBackgroundTaskWithExpirationHandler:和endBackgroundTask:包裝。這樣就在程序突然切入后臺的時候保護(hù)了這些任務(wù)不被中斷围辙。

2我碟、當(dāng)你的應(yīng)用程序委托applicationDidEnterBackground:方法被調(diào)用時再啟動任務(wù)

中的兩個方法必須是一一對應(yīng)的,endBackgroundTask:方法告訴系統(tǒng)任務(wù)已經(jīng)完成姚建,程序在此時可以被終止矫俺。由于應(yīng)用程序只有有限的時間去完成后臺任務(wù),你必須在超時或系統(tǒng)將要終止這個程序之前調(diào)用這個方法掸冤。為了避免被終止厘托,你也可以在一個任務(wù)開始的時候提供一個expiration handler和endBackgroundTask:方法。(可以查看backgroundTimeRemaining屬性來確定還剩多少時間)稿湿。

一個程序可以同時提供多個任務(wù)铅匹,每當(dāng)你啟動一個任務(wù)的時候,beginBackgroundTaskWithExpirationHandler:方法將返回一個獨(dú)一無二的handler去識別這個任務(wù)饺藤。你必須在endBackgroundTask:方法中傳遞相同的handler來終止該任務(wù)包斑。

Listing 4-2 Starting a background task at quit time

- (void)applicationDidEnterBackground:(UIApplication *)application

{

UIApplication* app = [UIApplication sharedApplication];

bgTask = [app beginBackgroundTaskWithExpirationHandler:^{

[app endBackgroundTask:bgTask];

bgTask = UIBackgroundTaskInvalid;

}];

// 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.

[app endBackgroundTask:bgTask];

bgTask = UIBackgroundTaskInvalid;

});

}

上述例子中,bgTask變量是一個類的成員變量涕俗,存儲著指向該后臺任務(wù)標(biāo)示的指針罗丰。

在expriation handler中,可以添加關(guān)閉任務(wù)所需的代碼再姑。盡管如此萌抵,加入的代碼不能執(zhí)行太長的時間,當(dāng)expriation handler被調(diào)用的時候询刹,該程序已經(jīng)非常接近被關(guān)閉谜嫉,所以只有極短的時間來清除狀態(tài)信息并終止任務(wù)。

安排Local Notification的傳遞

UILocalNotification類提供了一種方法來傳遞local notifications凹联。和push notifications需要設(shè)置remote server不同,local notifications 在程序中安排并在當(dāng)前的設(shè)備上執(zhí)行哆档。滿足如下條件可以使用該能力:

1蔽挠、一個基于時間的程序,可以在將來特定的時間讓程序post 一個alert,比如鬧鐘

2澳淑、一個在后臺運(yùn)行的程序比原,post 一個local notification去引起用戶的注意

為了安排local notification 的傳遞,需要創(chuàng)建一個UILocalNotification的實(shí)例杠巡,并設(shè)置它量窘,使用UIApplication類方法來安排它。Local notification對象包含了所要傳遞的類型(sound氢拥,alert蚌铜,或者badge)和時間何時呈現(xiàn))。UIApplication類方法提供選項(xiàng)去確定是立即傳遞還是在指定的時間傳遞嫩海。

Listing 4-3 Scheduling an alarm notification

- (void)scheduleAlarmForDate:(NSDate*)theDate

{

UIApplication* app = [UIApplication sharedApplication];

NSArray* oldNotifications = [app scheduledLocalNotifications];

// Clear out the old notification before scheduling a new one.

if ([oldNotifications count] > 0)

[app cancelAllLocalNotifications];

// Create a new notification.

UILocalNotification* alarm = [[[UILocalNotification alloc] init] autorelease];

if (alarm)

{

alarm.fireDate = theDate;

alarm.timeZone = [NSTimeZone defaultTimeZone];

alarm.repeatInterval = 0;

alarm.soundName = @"alarmsound.caf";

alarm.alertBody = @"Time to wake up!";

[app scheduleLocalNotification:alarm];

}

}

(可以最多包含128個 local notifications active at any given time, any of which can be configured to repeat at a specified interval.)如果在調(diào)用該notification的時候冬殃,程序已經(jīng)處于前臺,那么application:didReceiveLocalNotification:方法將取而代之叁怪。

小結(jié):關(guān)于詳解在IOS后臺執(zhí)行的內(nèi)容介紹完了审葬,希望本文對你有所幫助!

文七

iOS不是真正的多任務(wù)系統(tǒng)奕谭,在用戶按下Home按鈕后涣觉,所有應(yīng)用程序都會進(jìn)入后臺狀態(tài),并且大部分都會迅速進(jìn)入暫停狀態(tài)血柳,應(yīng)用程序的所有工作內(nèi)存都在RAM中官册,在暫停時它完全不執(zhí)行。因此混驰,切換回這樣的應(yīng)用程序非撑矢簦快。但是如果系統(tǒng)需要更多的內(nèi)存給當(dāng)前處于活動狀態(tài)的應(yīng)用程序栖榨,就有可能終結(jié)暫停狀態(tài)的應(yīng)用程序昆汹,它們的內(nèi)存也將被釋放。

一方面婴栽,應(yīng)用程序在進(jìn)入后臺狀態(tài)時满粗,需要釋放一些資源,使自身的暫陀拚快照更小映皆,從而減少從RAM中清除的風(fēng)險,另一方面轰枝,為了避免被終結(jié)而丟失用戶的數(shù)據(jù)捅彻,需要在用戶離開時保存他們的進(jìn)度信息,這些工作鞍陨,需要在5秒鐘內(nèi)完成步淹,不然會被系統(tǒng)認(rèn)定有異常被強(qiáng)制退出。可能通過接收應(yīng)用程序發(fā)送的通知(UIApplicationDidEnterBackgroundNotification)來觸發(fā)處理缭裆,如果在處理代碼中加上下面這條語句則必然會導(dǎo)致異常退出:

可以通過一種方法來請求更多后臺時間來避免此問題键闺。假設(shè)接收通知而觸發(fā)的處理方法是applicationDidEnterBackground:

-(void)applicationDidEnterBackground{

NSLog(@"%@",NSStringFromSelector(_cmd));

//得到當(dāng)前應(yīng)用程序的UIApplication對象

UIApplication *app = [UIApplication sharedApplication];

//一個后臺任務(wù)標(biāo)識符

UIBackgroundTaskIdentifier taskID;

taskID = [app beginBackgroundTaskWithExpirationHandler:^{

//如果系統(tǒng)覺得我們還是運(yùn)行了太久,將執(zhí)行這個程序塊澈驼,并停止運(yùn)行應(yīng)用程序

[app endBackgroundTask:taskID];

}];

//UIBackgroundTaskInvalid表示系統(tǒng)沒有為我們提供額外的時候

if (taskID == UIBackgroundTaskInvalid) {

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

return;

}

NSLog(@"Starting background task with %f seconds remaining", app.backgroundTimeRemaining);

[NSThread sleepForTimeInterval:10];

NSLog(@"Finishing background task with %f seconds remaining",app.backgroundTimeRemaining);

//告訴系統(tǒng)我們完成了

[app endBackgroundTask:taskID];

}

文八:

IOS開發(fā)之----詳解在IOS后臺執(zhí)行

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末辛燥,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子缝其,更是在濱河造成了極大的恐慌挎塌,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件氏淑,死亡現(xiàn)場離奇詭異勃蜘,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)假残,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進(jìn)店門缭贡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人辉懒,你說我怎么就攤上這事阳惹。” “怎么了眶俩?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵莹汤,是天一觀的道長。 經(jīng)常有香客問我颠印,道長纲岭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任线罕,我火速辦了婚禮止潮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘钞楼。我一直安慰自己喇闸,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布询件。 她就那樣靜靜地躺著燃乍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪宛琅。 梳的紋絲不亂的頭發(fā)上刻蟹,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天,我揣著相機(jī)與錄音嘿辟,去河邊找鬼座咆。 笑死痢艺,一個胖子當(dāng)著我的面吹牛仓洼,可吹牛的內(nèi)容都是我干的介陶。 我是一名探鬼主播,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼色建,長吁一口氣:“原來是場噩夢啊……” “哼哺呜!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起箕戳,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤某残,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后陵吸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體玻墅,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年壮虫,在試婚紗的時候發(fā)現(xiàn)自己被綠了澳厢。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡囚似,死狀恐怖剩拢,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情饶唤,我是刑警寧澤徐伐,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站募狂,受9級特大地震影響办素,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜祸穷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一性穿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧粱哼,春花似錦季二、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至绊含,卻和暖如春桑嘶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背躬充。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工逃顶, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留讨便,地道東北人。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓以政,卻偏偏與公主長得像霸褒,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子盈蛮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 蘋果官網(wǎng)地址 Background Execution (后臺執(zhí)行)當(dāng)用于沒有-啟動應(yīng)用废菱,系統(tǒng)移到后臺狀態(tài)。對于很...
    helinyu閱讀 7,720評論 0 9
  • 文一 我從蘋果文檔中得知抖誉,一般的應(yīng)用在進(jìn)入后臺的時候可以獲取一定時間來運(yùn)行相關(guān)任務(wù)殊轴,也就是說可以在后臺運(yùn)行一小段時...
    Kloar閱讀 1,480評論 0 1
  • 在iOS后臺執(zhí)行是本文要介紹的內(nèi)容,大多數(shù)應(yīng)用程序進(jìn)入后臺狀態(tài)不久后轉(zhuǎn)入暫停狀態(tài)袒炉。在這種狀態(tài)下旁理,應(yīng)用程序不執(zhí)行任何...
    我的馬里奧兄弟閱讀 828評論 0 0
  • 文檔app在后臺時會被暫停,暫停的apps會提高電池的使用壽命我磁,并且會讓系統(tǒng)將重要的系統(tǒng)資源投入到引起用戶注意的前...
    zziazm閱讀 4,608評論 0 5
  • 后臺執(zhí)行 當(dāng)用戶沒有主動使用您的應(yīng)用程序時孽文,系統(tǒng)將其移動到后臺狀態(tài)。對于許多應(yīng)用程序十性,后臺狀態(tài)只是暫停應(yīng)用程序的一...
    nicedayCoco閱讀 686評論 0 0