您好,登錄后才能下訂單哦!
Android中Droid-Fu的作用是什么,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。
Droid-Fu是什么 Droid-Fu 是一個(gè)通用的Android應(yīng)用庫(kù)
Droid-Fu 的主要目的是使得Android開(kāi)發(fā)更加容易
Droid-Fu 是開(kāi)源的還不夠嗎?
Droid-Fu 包含了許多工具類(lèi),還有非常易用的Android組件,所有這些對(duì)于Android應(yīng)用來(lái)說(shuō)都是非常有用的。Droid-Fu在以下領(lǐng)域提供了支持:
Android應(yīng)用的生命周期、后臺(tái)任務(wù) 、Http消息處理 、遠(yuǎn)程圖片處理 、定制的各種Adapter … 等等。Droid還很年輕,不久的將來(lái)會(huì)有更加精彩的特性! 基礎(chǔ)知識(shí) 的***優(yōu)勢(shì)是他提的應(yīng)用生命周期幫助類(lèi)。如果你正在開(kāi)發(fā)一款A(yù)ndroid應(yīng)用,而它的主要任務(wù)是運(yùn)行后臺(tái)任務(wù),例如從web上抓取數(shù)據(jù),你肯定會(huì)在你的應(yīng)用中使用Droid-Fu。
Droid-Fu
討厭的AsyncTask,我們先來(lái)看看AsyncTask的問(wèn)題吧:***,AsyncTask是什么?它是一個(gè)執(zhí)行大開(kāi)銷(xiāo)操作的幫助類(lèi)。如果你正在開(kāi)發(fā)一個(gè)需要訪問(wèn)web服務(wù)端的手機(jī)應(yīng)用,很可能你已經(jīng)使用過(guò)它了。
其基本思路是:發(fā)起一個(gè)異步任務(wù),當(dāng)任務(wù)線(xiàn)程執(zhí)行過(guò)程中,顯示一個(gè)漂亮的進(jìn)度框,當(dāng)任務(wù)將結(jié)果返回到Activity時(shí)進(jìn)度框關(guān)閉。酷,但是如果用戶(hù)決定旋轉(zhuǎn)屏幕,可異步任務(wù)還在運(yùn)行怎么辦(屏幕旋轉(zhuǎn)當(dāng)前的Activity會(huì)完成整個(gè)一輪生命周期。然后重新創(chuàng)建,回調(diào)onCreate()方法。)?或是一個(gè)電話(huà)打進(jìn)來(lái),打斷應(yīng)用,Android決定將該應(yīng)用進(jìn)程殺死怎么辦?這兩種動(dòng)作都會(huì)中斷activity,當(dāng)下次繼續(xù)使用該應(yīng)用時(shí)會(huì)recreate該Activity。很不幸,AsyncTask仍舊在運(yùn)行,并且保留一個(gè)指針指向老的Activity,因?yàn)橹貑⒌腁ctivity在內(nèi)存中式完全不同的一個(gè)對(duì)象(并且還會(huì)執(zhí)行Activity的onCreate(),就好像Activity是***次啟動(dòng)一樣)。我不確定AsyncTask是否還會(huì)將結(jié)果返回給老的Activity對(duì)象(如果是弱引用,可能它已經(jīng)被回收),但是無(wú)論如何,新的Activity不會(huì)接收到該數(shù)據(jù),因?yàn)橥耆且粋€(gè)新的Activity實(shí)例。
現(xiàn)在,人們可以說(shuō):好的,就再做一次同樣的工作,重新發(fā)送請(qǐng)求。是的,你可以這樣做。但這是浪費(fèi),真的,讓你覺(jué)得自己愚蠢,不是嗎?另外,如果用戶(hù)觸發(fā)一個(gè)Web服務(wù)請(qǐng)求,然后翻轉(zhuǎn)屏幕,發(fā)現(xiàn)不是自己想要的,又翻轉(zhuǎn)回來(lái),那么你的請(qǐng)求被發(fā)送平行的3倍。難道這就是你想要什么?大概不會(huì)。
BetterAsyncTask來(lái)救援 還好有Droid-Fu,他為我們提供了一個(gè)解決方案:BetterAsyncTask! 它的行為完全一樣AsyncTask(事實(shí)上,這是一個(gè)AsyncTask),但它為你做一些額外的工作:首先,它會(huì)記錄當(dāng)前活動(dòng)的實(shí)例,如果該實(shí)例改變,將發(fā)布的數(shù)據(jù)返回到新的實(shí)例。換句話(huà)說(shuō),你可以派遣你的任務(wù),并且隨意的來(lái)回翻轉(zhuǎn)屏幕,BetterAsyncTask仍然會(huì)將任務(wù)的結(jié)果返回給當(dāng)前的活動(dòng)實(shí)例。換句話(huà)說(shuō),任務(wù)永遠(yuǎn)只運(yùn)行一次。有一個(gè)問(wèn)題,由于BetterAsyncTask沒(méi)有辦法找出哪一個(gè)是其當(dāng)前活動(dòng)的實(shí)例,它依賴(lài)于一個(gè)助手:
DroidFuApplication。這個(gè)類(lèi)是Application的子類(lèi),如果你想使用BetterAsyncTask,你的應(yīng)用程序從該類(lèi)派生的,否則它不會(huì)工作。這是因?yàn)?strong>DroidFuApplication保留了活動(dòng)實(shí)例的弱映射,當(dāng)一個(gè)BetterAsyncTask完成后,它會(huì)通過(guò)您的Application獲取Activity實(shí)例。
你所需做的僅僅是發(fā)起一個(gè)任務(wù):
This is all you have to do to launch a task showing the standard Android indeterminate progress dialog:
public class MyActivity extends BetterDefaultActivity { protected void onResume() { super.onResume(); if (isLaunching()) { // this is explained further down this article MyBetterAsyncTask task = new MyBetterAsyncTask (this); task.execute(someData); } } }
此外,BetterAsyncTask在運(yùn)行期還會(huì)自動(dòng)打開(kāi)和關(guān)閉對(duì)話(huà)框,雖然你進(jìn)步的運(yùn)行,或觸發(fā)活動(dòng)標(biāo)題欄的進(jìn)度條。它還可以讓你的任務(wù)在執(zhí)行過(guò)程中拋出異常,然后再發(fā)布到你的錯(cuò)誤處理handle。
BetterActivity 和 BetterService Droid-Fu為活動(dòng)和服務(wù)提供一些簡(jiǎn)單但非常有用的輔助基類(lèi)。目前,只有BetterDefaultActivity,BetterListActivity和BetterService,但我打算實(shí)現(xiàn)Better*系列Android活動(dòng)基類(lèi)(如MapActivity等)。
你將在以下方面獲得幫助
生命周期幫助類(lèi) 這些方法讓你根據(jù)上下文的生命周期狀態(tài)來(lái)決定完成具體什么工作。
isLaunching() :當(dāng)且僅當(dāng)Activity或Service***次執(zhí)行onCreate時(shí)為true
isRestoring() :當(dāng)Activity或Service在被Android殺死后重新恢復(fù)時(shí)為true
isResuming() :當(dāng)Activity或Service執(zhí)行onResume之前并沒(méi)有執(zhí)行onCreate時(shí)為true
isApplicationBroughtToBackground(): 有時(shí)是必要區(qū)分您的活動(dòng)正由你自己的應(yīng)用程序活動(dòng)暫停,或由一個(gè)完全不同的應(yīng)用暫停。這種方法可以得到真實(shí)的,如果由另一個(gè)應(yīng)用程序暫停你的活動(dòng),那么返回true
Dialog幫助類(lèi) BetterActivity提供了如下的幫助方法讓你輕松顯示Dialog
showInfoDialog(): 顯示了一個(gè)帶有通知圖標(biāo)的警告對(duì)話(huà)框
showAlertDialog(): 顯示了一個(gè)帶有警告圖標(biāo)的警告對(duì)話(huà)框
showErrorDialog(): 和showAlertDialog一樣,只是多了一個(gè)參數(shù)顯示異常信息
showListDialog(): 顯示了一個(gè)列表對(duì)話(huà)框,當(dāng)點(diǎn)擊一個(gè)條目,它會(huì)回調(diào)處理程序
所有的這些Dialog都是可以定制化的 (e.g. message or icon).
關(guān)于Android中Droid-Fu的作用是什么問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。