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

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

學習AboutiOSAppProgramming第二天

學習 About iOS App Programming 第二天

創(chuàng)新互聯(lián)致力于網(wǎng)站制作、成都網(wǎng)站建設(shè),成都網(wǎng)站設(shè)計,集團網(wǎng)站建設(shè)等服務(wù)標準化,推過標準化降低中小企業(yè)的建站的成本,并持續(xù)提升建站的定制化服務(wù)水平進行質(zhì)量交付,讓企業(yè)網(wǎng)站從市場競爭中脫穎而出。 選擇創(chuàng)新互聯(lián),就選擇了安全、穩(wěn)定、美觀的網(wǎng)站建設(shè)服務(wù)!

------App States and Multitasking

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

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

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

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

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

    Processing Queued Notifications at Wakeup Time 

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

Managing App State Changes

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

Table 3-1  App states

State

Description

Not running

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

Inactive

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

Active

app處于前臺同時能接受事件

Background

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

Suspended

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

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

The App Launch Cycle

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

Responding to Interruptions

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

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

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

Moving to the Background

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

What to Do When Moving to the Background

app用applicationDidEnterBackground:這個代理方法能實現(xiàn)做進入后臺的準備工作。如

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

  • 釋放內(nèi)存

Memory Usage for Background Apps

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

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

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

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

Returning to the Foreground

當app重返前臺時,會重啟因為到后臺而停止的任務(wù)?;氐角芭_的流程是先會調(diào)用applicationWillEnterForeground,然后在調(diào)用applicationDidBecomeActive,這個兩個代理方法結(jié)束以后,app就是到前臺了

Processing Queued Notifications at Wakeup Time

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

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

The Main Run Loop

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

Background Execution and Multitasking

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

盡可能不要讓app在后臺運行,如果app必須要在后臺運行時。如:

    需要完成至少一個認為對特定的用戶。

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

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

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

Implementing Long-Running Background Tasks

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


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

語音記錄app。

VoIP app

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

Concurrency and Secondary Threads

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

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

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


網(wǎng)站標題:學習AboutiOSAppProgramming第二天
分享地址:http://weahome.cn/article/gjsdhp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部