編輯:Android開發教程
AndroidAnnotations是一個開源框架,旨在加快Android開發的效率。通過使用它開放出來的注解api,你幾乎可以使用在任何地方, 大大的減少了無關痛癢的代碼量,讓開發者能夠抽身其外,有足夠的時間精力關注在真正的業務邏輯上面。而且通過簡潔你的代碼,也提高了代碼的穩定性和後期的維護成本。以下AndroidAnnotations簡稱為AA
可能會有人提出異議了,我們移動設備的性能,不比後台服務器擁有充足的內存和運算能力。當大量的使用注解的時候,會不會對APP的造成什麼不良的影響,會不會影響到APP的執行性能?在這裡先明確的聲明,AA不會給APP帶來任何副作用,相反它強大易用的api能為你帶來前所未有的編程體驗。
目前主流的注解框架有xUtils、ButterKnife、Dragger和Roboguice,它們的實現原理都是一致的,都是通過反射機制實現的。通過在Runtime運行期去反射類中帶有注解的Field和Method,然後再去執行注解相對應的邏輯代碼。大家都知道反射機制是在APP的運行期執行的,會造成執行的效率下降,執行時間變長的缺點。當在我們APP中大量的使用基於反射的注解,會嚴重影響到性能。但是AA的實現的邏輯並不是基於此。
AA工作的原理其實也很簡單,它通過使用jdk 1.6引入的Java Annotation Processing Tool,
在編譯器中加了一層額外的自動編譯步驟,用來生成基於你源碼的代碼。生成的代碼是你源碼的直接子類,而且自動生成的類的名稱就是父類名稱後面加個下劃線。比如使用了@EActivity注解的MyActivity,AA都會自動幫你生成一個名為MyActivity_的類。使用AA的注解在編譯期間就已經自動生成了對應的子類,運行期運行的其實就是這個子類,所以說AA的使用不會給APP的執行性能造成負面影響。
AA開發環境搭建:右鍵=>Properties=>Java Compiler => Annotation Processing => Factory Path。
下面我們通過示例來簡單了解這個強大的框架,主要介紹一些常用的注解。
一、組件的注解
@EActivity這個注解是用來修飾Activity的,向Activity注入布局,也可以設置頁面的樣式為全屏、無Title。這些使用具有實意的注解來實現,是不是很方便呀。對於其他的組件支持也是相當簡單的,如@EService、@EReceiver、@EProvider、@EApplication、@EApplication、@EFragment。同時也能修飾自定義控件,注解為@EView、@EViewGroup。支持是不是相當全面。
二、資源引用的注解
有了AA,各種讓人煩躁的findViewById從此一去不再返了,你可以簡單的使用@ViewById去綁定布局裡面的控件,如果你的變量名和控件的id值一致,連id的指向也可省去。而且在注解中不寫id的情況下,如果編譯器在R文件中找不到對應變量id名的時候,編譯器也會給你提示,很是友好。
同時你要是想在成員變量中引用資源的話,只要在變量上加入對應的注解修飾就可以了,同樣的如果變量名稱和資源id一致的時候,id就可省去。支持所有的資源文件,所有的。
如果你想獲取系統服務,只要在你的變量前加上@SystemService注解。
獲取Intent中傳遞的值,加上@Extra注解,同時容錯性很好,如果接收不到這個key對應的value,也沒問題,你可以設置默認值。再有就是強轉失敗也不會造成crash,比如傳遞的是個int值,接收的時候是個String,也沒有問題,只是接收失敗罷了。
很強大有木有,修飾成員變量的注解主要用來解決它們初始化的問題,做到聲明即初始化,拿來即可用的功能。還有很多屬性,就不一一介紹了。
查看本欄目更多精彩內容:http://www.bianceng.cn/OS/extra/
1.介紹快過年了,博主的新應用-屏幕取詞之了老花鏡的編碼工作也在緊鑼密鼓的進行中。下面分享一下這個應用中的核心功能ocr,也就是圖片識詞功能。先來看下我的實現效果。上圖是
SetWallpaper介紹如何在Android獲取當前Wallpaper,對Wallpaper做些修改,然後用修改後的圖像重新設置Wallpaper。Wallpaper
實現 Android 調用基於 IBM i 的 Web 服務作為 Internet 異構環境下的互操作技術,Web 服務被廣泛應用。由於 Web 服務具有跨語言、跨平台等
一.首先什麼是context?文檔語焉不詳,說是resource什麼的,反正是沒看懂,實際上可以認為它是一個指向parent對象的指針,受到那個parent對象的控制。二
創建好ApiDemo項目後,就可以逐個示例的來分析代碼,這裡假定讀者已對