第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

當(dāng)應(yīng)用程序在后臺(tái)運(yùn)行時(shí)預(yù)定NSTimer?

當(dāng)應(yīng)用程序在后臺(tái)運(yùn)行時(shí)預(yù)定NSTimer?

iOS
鳳凰求蠱 2019-11-12 10:27:03
當(dāng)應(yīng)用程序在后臺(tái)運(yùn)行時(shí),人們?nèi)绾翁幚眍A(yù)定的NSTimer?假設(shè)我每小時(shí)更新一次我的應(yīng)用程序中的內(nèi)容。updateTimer = [NSTimer scheduledTimerWithTimeInterval:60.0*60.0 target:self selector:@selector(updateStuff) userInfo:nil repeats:YES];在后臺(tái)時(shí),此計(jì)時(shí)器顯然不會(huì)觸發(fā)(?)。當(dāng)用戶回到應(yīng)用程序時(shí)該怎么辦?計(jì)時(shí)器是否仍在運(yùn)行同一時(shí)間?如果用戶在一個(gè)小時(shí)后回來(lái),將會(huì)發(fā)生什么。它會(huì)在錯(cuò)過(guò)的所有時(shí)間觸發(fā)還是會(huì)等到下一個(gè)更新時(shí)間?我希望它執(zhí)行的操作是在應(yīng)用程序啟動(dòng)后立即更新,如果它應(yīng)該觸發(fā)的日期是過(guò)去的話。那可能嗎?
查看完整描述

3 回答

?
慕村225694

TA貢獻(xiàn)1880條經(jīng)驗(yàn) 獲得超4個(gè)贊

您不應(yīng)該通過(guò)設(shè)置計(jì)時(shí)器來(lái)解決此問(wèn)題,因?yàn)椴辉试S您在后臺(tái)執(zhí)行任何代碼。想象一下,如果用戶在此期間或在其他一些極端情況下重新啟動(dòng)iPhone,將會(huì)發(fā)生什么情況。


使用AppDelegate 的applicationDidEnterBackground:和applicationWillEnterForeground:方法來(lái)獲取所需的行為。它更加健壯,因?yàn)楫?dāng)您的應(yīng)用由于重啟或內(nèi)存不足而被完全殺死時(shí),它也將起作用。


您可以節(jié)省當(dāng)應(yīng)用程序進(jìn)入后臺(tái)時(shí)計(jì)時(shí)器將在下一次觸發(fā)的時(shí)間,并檢查當(dāng)應(yīng)用程序返回到前臺(tái)時(shí)是否應(yīng)采取措施。也可以使用這種方法停止并啟動(dòng)計(jì)時(shí)器。當(dāng)您的應(yīng)用運(yùn)行時(shí),您可以使用計(jì)時(shí)器在適當(dāng)?shù)臅r(shí)候觸發(fā)更新。


查看完整回答
反對(duì) 回復(fù) 2019-11-12
?
當(dāng)年話下

TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個(gè)贊

如果您或其他人正在尋找如何在Swift的后臺(tái)運(yùn)行NSTimer的方法,請(qǐng)將以下內(nèi)容添加到您的App Delegate中:


var backgroundUpdateTask: UIBackgroundTaskIdentifier = 0



func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    return true

}


func applicationWillResignActive(application: UIApplication) {

    self.backgroundUpdateTask = UIApplication.sharedApplication().beginBackgroundTaskWithExpirationHandler({

        self.endBackgroundUpdateTask()

    })

}


func endBackgroundUpdateTask() {

    UIApplication.sharedApplication().endBackgroundTask(self.backgroundUpdateTask)

    self.backgroundUpdateTask = UIBackgroundTaskInvalid

}


func applicationWillEnterForeground(application: UIApplication) {

    self.endBackgroundUpdateTask()

}

干杯!


查看完整回答
反對(duì) 回復(fù) 2019-11-12
  • 3 回答
  • 0 關(guān)注
  • 441 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)