Android培訓(xùn)之Android開發(fā)應(yīng)用獲取同步信息
2016-03-02 14:56:23
1303瀏覽
幾乎所有Android開發(fā)應(yīng)用程序都會使用互聯(lián)網(wǎng)獲取信息或者同步數(shù)據(jù):如果讀者之前開發(fā)過應(yīng)用程序,可能會有很多方法實(shí)現(xiàn)建立網(wǎng)絡(luò)連接并在加載數(shù)據(jù)時顯示一個進(jìn)度動畫的功能。
一.使用AsyncTask
AsyncTask是Android用于處理線程的類,通過該類,開發(fā)者可以很容易地把代碼邏輯從一個線程移到另外一個線程。
“對于單線程模型,謹(jǐn)記兩個原則:不要阻塞UI線程;確保僅在UI線程中訪問Android UI控件”。
AsyncTask可以很容易地滿足上述兩個原則一因此,你學(xué)會了如何使用AsyncTask類,然后開始在各處代碼中使用該類。不管uI有多復(fù)雜,也不管解析大數(shù)據(jù)耗時多久,AsyncTask總是常伴你左右。你很早就完成了工作任務(wù),然后對著公司里的iOS開發(fā)者嘲笑道:“Android比iOS容易多啦!我可以早早完成工作:你們好好享受晚上加班的樂趣吧,果粉們!”
可惜,好景不長。你發(fā)現(xiàn),當(dāng)AsyncTask執(zhí)行時轉(zhuǎn)動設(shè)備,應(yīng)用程序會崩潰。雖然這個問題很難解決,但是你總算想了個笨方法暫時應(yīng)付過去了:后來,你發(fā)現(xiàn)應(yīng)用程序運(yùn)行一段時間后還是會崩潰,崩潰的原因是AsyncTask支持的并發(fā)任務(wù)的數(shù)量有限。當(dāng)嘗試解決第二個缺陷的時候,你發(fā)現(xiàn)很多繼承自AsyncTask的內(nèi)部類充斥著Activity,看起來你的Activity被這些類“污染”了。很長時間,你都在思考哪里出了問題。
如果
Android開發(fā)者打算使用AsyncTask,一定要慎重考慮。使用AsyncTask的唯一理由是:后臺任務(wù)比較簡單或者你不依賴于其執(zhí)行結(jié)果。接下來,我們分析另外一種方法。
二.使用Service
第二種方法是使用Service類。使用Service可以避免很多問題,但同時也引入了其他問題。下面的關(guān)注列表會經(jīng)常提醒我使用Service是否合適:
口與Activity交互
口決定什么時候以及如何啟動Service
口運(yùn)行時需要檢查連接狀態(tài)
口持久化數(shù)據(jù)
這個方法引入的問題主要是由系統(tǒng)的靈活性造成的:例如,開發(fā)者可以通過不同方式與Activity交互。Activity是否應(yīng)該綁定到Service?是否需要使用Handler?是否需要通過Intent交互?是否需要使用數(shù)據(jù)庫共享信息?存在太多不確定性問題,但是每個問題的答案都是“視情況而定”。
建議對于Android培訓(xùn)感興趣的讀者,可以先觀看扣丁學(xué)堂關(guān)于Android開發(fā)教程視頻,在看過真實(shí)的講師授課后,再來選擇扣丁學(xué)堂是否真正適合自己。
查看更多關(guān)于“Android培訓(xùn)資訊”的相關(guān)文章>>
標(biāo)簽: