成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Android開發進階:使用依賴注入函數庫Roboguice

移動開發 Android
Roboguice是一個用于Android應用的依賴注入框架,使用Google官方的Guice庫位極大地簡化了Android的依賴注入。讓你的Android應用開發之路更加平坦順利,編程更加簡單有趣。

本文原標題是如何成為一個偷懶又高效的Android開發人員,我敢肯定你對這個標題肯定心存疑惑,但事實就是如此,這個標題完全適合Android開發人員。據我所知, Android程序員不情愿寫 findViewById()、點擊事件監聽等重復率較高的代碼。那我們如何才能縮短編寫業務邏輯代碼的時間,并且避免寫那些重復的代碼呢?所以讓我們來成為一個能偷懶又有高效率的Android程序員。想知道怎么做嗎?不用急,接下來我就會寫到。

有許多第三方的庫和框架是可供我們使用。出于種種原因,我們并不知道這些庫或者知道但還沒用過。有的開發者開發了自己定義的庫或者并不想使用第三方的庫。如果我們在應用程序開發的過程中使用一些第三方庫,也許可以提高程序的可兼容性、漂亮的UI界面、讓代碼變得整潔等等。所以,我將研究更多像這樣的 第三方庫來幫助初學者和有經驗的開發人員。

今天,讓我們來討論下“依賴注入函數庫”。

什么是依賴注入?

依賴注入是一種軟件設計模式,無論是在運行時還是在編譯時,允許刪除、改變硬編碼依賴性。[來自Wikipedia](維基百科資源):

一些常用和普遍的依賴注入庫有:

RoboGuice:

[[107491]]

Roboguice是一個用于Android應用的依賴注入框架,使用Google官方的Guice庫位極大地簡化了Android的依賴注入。讓你的Android應用開發之路更加平坦順利,編程更加簡單有趣。

當你調用 getIntent(),getExtras()這些函數時你是否經常忘記檢查是否為Null?RoboGuice可以幫助你。初始化TextView有必要調用findViewById()嗎?不用,RoboGuice已經為你完成了。

通過使用RoboGuice,你可以注入View視圖控件、資源、系統服務或者其他任何對象。RoboGuice能幫你精簡應用程序的代碼。代碼越少意味著出現問題或bug的次數也就越少,從而可以把更多的精力花在項目中那些需要編寫或修改的部分,使得閱讀代碼更加容易。

讓我們來看看各種RoboGuice 庫的使用方法。

使用RoboGuice庫 :

  • 控件注入:用@InjectViews方法初始化控件,例如:@InjectView(R.id.textview1)TextView textView1。
  • 資源注入:用@InjectResources方法初始化資源,例如:@InjectResource(R.string.app_name)String name。
  • 系統服務注入:用@Inject方法初始化并獲取系統服務,例如:@Inject LayoutInflater inflater。
  • POJO對象注入:用@Inject方法注入并初始化POJO對象,例如:@Inject Foo foo。

安裝

要使用RoboGuice,你需要下載JAR文件并把他們添加到環境變量中:

我們來看看一個簡單的一般事件代碼:

實例

  1. public class TestActivity extends Activity{ 
  2.   
  3.     TextView textView1; 
  4.     TextView textView2; 
  5.     ImageView imageView1; 
  6.     String name; 
  7.     Drawable icLauncher; 
  8.     LocationManager locManager; 
  9.     LayoutInflater inflater; 
  10.     NotificationManager notifyManager; 
  11.   
  12.     @Override 
  13.     protected void onCreate(Bundle savedInstanceState) { 
  14.         // TODO Auto-generated method stub 
  15.         super.onCreate(savedInstanceState); 
  16.         setContentView(R.layout.layout_test); 
  17.         textView1 = (TextView) findViewById(R.id.textView1); 
  18.         textView2 = (TextView) findViewById(R.id.textView2); 
  19.         imageView1 = (ImageView) findViewById(R.id.imageView1); 
  20.         name = getString(R.string.app_name); 
  21.         icLauncher = getResources().getDrawable(R.id.ic_launcher); 
  22.         locManager = (LocationManager) getSystemService(Activity.LOCATION_SERVICE); 
  23.         inflater = (LayoutInflater) getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 
  24.         notifyManager = (NotificationManager) getSystemService(Activity.NOTIFICATION_SERVICE); 
  25.         textView1.setText("Hello World! RoboGuice demo"); 
  26.      } 

再看看使用RoboGuice精簡代碼后神奇之處。

使用RoboGuice

你先要繼承RoboActivity或者RoboFragment,才能使用RoboGuice的依賴注入功能。

  1. public class TestActivity extends RoboActivity{ 
  2.   
  3.     @InjectView(R.id.textView1) TextView textView1; 
  4.     @InjectView(R.id.textView2) TextView textView2; 
  5.     @InjectView(R.id.imageView1) ImageView imageView1; 
  6.     @InjectResource(R.string.app_name) String name; 
  7.     @InjectResource(R.drawable.ic_launcher) Drawable icLauncher; 
  8.     @Inject LocationManager locManager; 
  9.     @Inject LayoutInflater inflater; 
  10.     @Inject NotificationManager notifyManager; 
  11.     @Override 
  12.     protected void onCreate(Bundle savedInstanceState) { 
  13.         // TODO Auto-generated method stub 
  14.         super.onCreate(savedInstanceState); 
  15.         setContentView(R.layout.layout_test); 
  16.         textView1.setText(name); 
  17.     } 

這么一對比,我想你肯定明白了為什么要使用RoboGuice?再來看看有哪些好處:

使用RoboGuice的好處

  • 不需要初始化控件,如有需要就用@InjectViews。
  • 不需要初始化系統服務,如有需要就用@Inject。
  • 不需要初始化像Drawable,string以及其他的資源,如有需要就用@InjectResource。
  • 以上實踐能幫助你精簡代碼。
  • 越少的代碼,越少的問題和bugs。
  • 少量的代碼讓Android開發人員省力同時,也讓他們能更專注于實際的業務邏輯。

RoboGuice和ActionBarSherlock

正如我前面提到的,你得在RoboActivity和RoboFragment中繼承其中一個才能在Activity事件或Fragment中使用 RoboGuice。但是如果你已經在項目中使用了ActionBarSherlock去編譯呢?那問題就在于,你已經繼承了 SherlockActivity或SherlockFragmentActivity中的一個。現在問題是,你不能同時使用RoboGuice和 ActionBarSherlock。

解決方法是,為Activities和Fragments定義一個基類。然后你就能同時使用RoboGuice和ActionBarSherlock了。

你可以在這里下載一些基類:
https://github.com/rtyley/roboguice-sherlock 或者下載JAR包也是一樣:RoboGuice+Sherlock.jar,你可以任選一個添加到你的項目。

責任編輯:徐川 來源: ImportNew
相關推薦

2013-12-27 09:54:58

Android開發NDK

2010-12-23 09:11:17

讀寫Android文件

2011-05-03 15:28:15

BlackBerryWidget

2009-09-17 13:15:12

NIS函數庫

2021-02-28 20:41:18

Vue注入Angular

2012-02-07 10:05:40

jQuery MobijQuery Mobi

2011-10-18 10:25:08

Android應用開發

2011-05-31 10:00:21

Android Spring 依賴注入

2011-10-18 10:17:39

Android應用開發

2011-08-17 16:23:31

iPhone開發UIViewContr

2009-11-16 15:07:23

PHP數組函數庫

2009-12-08 19:34:26

PHP拼寫檢查函數庫

2011-08-17 16:29:12

iPhone開發UIButton

2021-01-20 08:16:06

異步Dotnet Core多路徑

2013-06-27 14:14:06

安卓開發經驗安卓資源安卓UI

2011-08-23 15:02:59

LuaTable

2023-08-01 08:52:03

WebRTC.Net線程

2009-04-30 09:02:53

AcerAndroid開發

2010-04-27 09:55:15

2024-04-01 00:02:56

Go語言代碼
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产一区二区不卡 | 久久久久久久国产 | 国产中文| 激情 一区| 一区二区三区四区免费观看 | 黄色精品 | 精品综合久久久 | www.亚洲 | 男人天堂色 | 在线成人www免费观看视频 | 超碰97免费 | 久久福利电影 | 亚洲欧美日韩在线不卡 | 色爱综合网 | 91久久精品国产免费一区 | 中文字幕精品视频 | 亚洲欧美一区在线 | 一级毛片免费看 | 国产精品亚洲欧美日韩一区在线 | 国产区在线 | 日韩中出 | 日本又色又爽又黄的大片 | 久久精品一区二区三区四区 | 亚洲精品在线播放 | av影音资源| 成人福利片 | 欧美激情99 | 国产亚洲一区在线 | 日韩在线综合网 | 久久香焦 | a级片网站 | 日韩免费一级 | 青青艹在线视频 | 欧美精品久久久久久久久久 | 成人免费视频网站在线看 | 欧美手机在线 | 久久综合久久久 | 中文字幕免费观看 | 国产精品免费大片 | 亚洲免费在线视频 | 日韩精品人成在线播放 |