真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

學(xué)習(xí)AboutiOSAppProgramming第二天-創(chuàng)新互聯(lián)

學(xué)習(xí) About iOS App Programming 第二天

10年積累的成都網(wǎng)站建設(shè)、成都做網(wǎng)站經(jīng)驗(yàn),可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先建設(shè)網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有新化免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

------App States and Multitasking

    對于app開發(fā)者,一定要很明確的知道app是運(yùn)行狀態(tài),如在前臺還是在后臺。因?yàn)樘O果系統(tǒng)不想安卓系統(tǒng)那用大方,蘋果系統(tǒng)的系統(tǒng)資源是有很多約束的,app在前臺和在后臺享受的待遇是很大不同。當(dāng)app在后臺時(shí),app會(huì)遭到系統(tǒng)一些限制,這樣為了改善電池的壽命和提高其他在前臺app的用戶體驗(yàn)。同時(shí)蘋果會(huì)及時(shí)進(jìn)行通知當(dāng)在進(jìn)行前后臺的轉(zhuǎn)化時(shí)。

當(dāng)我們的app在前臺運(yùn)行時(shí),系統(tǒng)會(huì)實(shí)時(shí)的為app捕抓觸碰事件。UIKit的基礎(chǔ)框架作了很多工作為傳遞事件。同時(shí)可以定制自己想要的響應(yīng)事件方法。如文本框輸入文字的捕抓。

為了開發(fā)一個(gè)比較優(yōu)秀的app,在技術(shù)上要對下面進(jìn)行一定的了解

    Managing App State Changes ------ 根據(jù)app的狀態(tài)做出準(zhǔn)確的響應(yīng),這樣有利提高用戶體驗(yàn)和防止數(shù)據(jù)丟失。

    Being a Responsible Background App ------ 當(dāng)app退到后臺以后,一定了解app能干神馬和將會(huì)發(fā)生啥。

    Processing Queued Notifications at Wakeup Time

    Background Execution and Multitasking ------- 了解怎樣在后臺很能工作。

Managing App State Changes

開發(fā)出來的app,無論在神馬時(shí)候,肯定是3-1表中的一種。app從一種到另一種狀態(tài)一定有相應(yīng)的事件對應(yīng)。

Table 3-1  App states

State

Description

Not running

app 還沒有運(yùn)行或者起來,處于結(jié)束狀態(tài)。

Inactive

app處于前臺但是當(dāng)時(shí)不能接受事件,這個(gè)狀態(tài)一般發(fā)生在狀態(tài)之間的轉(zhuǎn)換。

Active

app處于前臺同時(shí)能接受事件

Background

app在后臺和執(zhí)行代碼,大部分的app在這中狀態(tài)就是簡單暫停,但是還是有一些app在這個(gè)狀態(tài)還是能執(zhí)行一些任務(wù)的。

Suspended

app退到后臺同時(shí)不能執(zhí)行任務(wù)了。當(dāng)app轉(zhuǎn)到這種狀態(tài)是app就是自動(dòng)和不能前臺了。大部分時(shí)候是保存在內(nèi)存中。但是當(dāng)內(nèi)存吃緊時(shí),app也時(shí)候后不猶豫的被槍斃。

溫馨提示:在早期的ios版本是不能進(jìn)入后臺和暫停狀態(tài)的。同時(shí)一些設(shè)備不支持多任務(wù)和后臺執(zhí)行任務(wù)。這些是從ios4開始的。

The App Launch Cycle

當(dāng)app起來的時(shí)候,app從沒有運(yùn)行的狀態(tài)變化到激化狀態(tài)和后臺狀態(tài),之間都用短暫通過inactive state。作為啟動(dòng)周期的一部分,系統(tǒng)創(chuàng)建了一個(gè)流程和主線程對于app調(diào)用app的主要方法。這些主要方法都來至于xcode項(xiàng)目的control。如app基本配置。

Responding to Interruptions

1 當(dāng)一個(gè)報(bào)警級別的中斷發(fā)生了,比如一個(gè)電話打進(jìn)來了。app臨時(shí)轉(zhuǎn)變成inactive state,這樣促使用去去選擇接下來這樣處理進(jìn)程。這個(gè)app一直停留在未激活的狀態(tài),直到放棄這個(gè)報(bào)警級別的事情。在這個(gè)時(shí)候既可以轉(zhuǎn)到激活狀態(tài)或者后臺。

2 在ios5中,通知是展示一個(gè)"條幅",同時(shí)app不會(huì)進(jìn)入到未激活狀態(tài),這樣只是提醒用戶來了新的信息。同時(shí)用戶可以通過這個(gè)消息進(jìn)入其他app,讓當(dāng)前的app處于后臺或者未激活狀態(tài)。

3 當(dāng)按了Sleep/Wake button,app將退到非激活狀態(tài),當(dāng)用戶按了這個(gè)按鈕以后,系統(tǒng)將不能接受觸摸事件了,同時(shí)app會(huì)進(jìn)入后臺。

Moving to the Background

當(dāng)用戶觸發(fā)了進(jìn)入后臺的事件,如啟動(dòng)其他app,home按鈕等等,app將會(huì)先調(diào)applicationWillResignActive:這個(gè)代理方法,然后調(diào)用applicationDidEnterBackground:代理方法。所以當(dāng)app在進(jìn)入后臺之前需要做一些事情的時(shí)候,在這個(gè)兩個(gè)代理方法實(shí)現(xiàn)就行了。

What to Do When Moving to the Background

app用applicationDidEnterBackground:這個(gè)代理方法能實(shí)現(xiàn)做進(jìn)入后臺的準(zhǔn)備工作。如

  • 保存用戶數(shù)據(jù)和app狀態(tài)信息

  • 釋放內(nèi)存

Memory Usage for Background Apps

開發(fā)者在設(shè)計(jì)app時(shí)一定要知道當(dāng)app進(jìn)入后臺以后釋放內(nèi)存。雖然系統(tǒng)會(huì)盡量會(huì)保存一些app在內(nèi)存中。但是當(dāng)內(nèi)存警告的時(shí)候還是會(huì)強(qiáng)行要app釋放。

在開發(fā)的過程中,我們一定要記住之時(shí)的移除強(qiáng)引用對象,這樣方便內(nèi)存空間的再次利用。同時(shí)當(dāng)我們?yōu)榱颂岣哂脩趔w驗(yàn),把一些對象放到內(nèi)存中去執(zhí)行,當(dāng)我們的app進(jìn)入后臺時(shí)一定要記得把這樣的對象從內(nèi)存中移除。

比如:照片,語音數(shù)據(jù)。

系統(tǒng)為了幫助app減少app所用內(nèi)存,系統(tǒng)會(huì)自動(dòng)的清理一些數(shù)據(jù),在進(jìn)入后臺前。

Returning to the Foreground

當(dāng)app重返前臺時(shí),會(huì)重啟因?yàn)榈胶笈_而停止的任務(wù)?;氐角芭_的流程是先會(huì)調(diào)用applicationWillEnterForeground,然后在調(diào)用applicationDidBecomeActive,這個(gè)兩個(gè)代理方法結(jié)束以后,app就是到前臺了

Processing Queued Notifications at Wakeup Time

app進(jìn)入暫停的狀態(tài)是必須去準(zhǔn)備一個(gè)操作任何消息的隊(duì)列當(dāng)它重返前臺或者后臺執(zhí)行狀態(tài)。雖然app在暫停狀態(tài)不能執(zhí)行任何代碼,但是為了確保不丟失方向的改變信息。系統(tǒng)的隊(duì)列把這些改變信息進(jìn)行記錄。當(dāng)app再次可以執(zhí)行代碼時(shí),把這些信息傳給app。

消息隊(duì)列將用主線程給app發(fā)送消息,同時(shí)它將在任何觸摸事件和用戶輸入之前。大多數(shù)app應(yīng)該能響應(yīng)這些事件。

The Main Run Loop

app主run loop是用來連續(xù)響應(yīng)所有用戶相關(guān)的事件,UIApplication對象在起來的時(shí)間就是生成了一個(gè)run loop,它在app的主線程中。這樣保證了的用戶相關(guān)的事件能得到連續(xù)的響應(yīng)。

Background Execution and Multitasking

ios4以后,多任務(wù)可以在后臺運(yùn)行app,但是為了保護(hù)電池,很多app在進(jìn)入后臺以后就會(huì)暫停服務(wù)。

盡可能不要讓app在后臺運(yùn)行,如果app必須要在后臺運(yùn)行時(shí)。如:

    需要完成至少一個(gè)認(rèn)為對特定的用戶。

    需要執(zhí)行一個(gè)簡單定長的任務(wù)。

    需要通知用戶一些警告級別的信息。

系統(tǒng)會(huì)盡可能的多保留app在內(nèi)存中,但是內(nèi)存吃緊的時(shí)候,系統(tǒng)會(huì)殺掉他們。留出足夠的內(nèi)存給前臺的app,這樣必須前臺app能得到較好的用戶體驗(yàn)。

Implementing Long-Running Background Tasks

對一些特殊的app需要很長的時(shí)間在后臺執(zhí)行,因?yàn)殚_發(fā)者需要獲得一些特定的權(quán)限,讓app可以在后臺長時(shí)間,一下一些情況可以申請:

播放音頻內(nèi)容的app,想音樂播放器。

語音記錄app。

VoIP app

需要后臺下載的任務(wù)

Concurrency and Secondary Threads

系統(tǒng)一個(gè)app主線程,同時(shí)app自己可以創(chuàng)立其他線程去做其他任務(wù)。蘋果比較推薦用gcd和operation queue,創(chuàng)立自己的線程的好處是讓主線程去處理事件相應(yīng)。

開發(fā)者應(yīng)該使用隊(duì)列無論什么時(shí)候需要從主線程中脫離出來執(zhí)行任務(wù)。讓主線程處理事件和畫圖事件。開發(fā)者不必一定執(zhí)行在主線程上。比如app在等待網(wǎng)絡(luò)回調(diào)時(shí),這樣就可以放在queue執(zhí)行。

多線程的另一個(gè)好處是可以將任務(wù)移植到非主線程中,這樣app在起來的時(shí)候,主線程去進(jìn)行初始化和開始相應(yīng)事件,不會(huì)影響用戶體驗(yàn)。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


分享標(biāo)題:學(xué)習(xí)AboutiOSAppProgramming第二天-創(chuàng)新互聯(lián)
文章路徑:http://weahome.cn/article/edjcc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部