如何成為一個偷懶又高效的Android開發人員

jopen 10年前發布 | 32K 次閱讀 Android

  英文原文:How to Become a Lazy but Productive Android Developer

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

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

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

  什么是依賴注入?

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

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

q1.png

  RoboGuice:

如何成為一個偷懶又高效的Android開發人員

  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 文件并把他們添加到環境變量中:

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

  實例

public class TestActivity extends Activity{

    TextView textView1;
    TextView textView2;
    ImageView imageView1;
    String name;
    Drawable icLauncher;
    LocationManager locManager;
    LayoutInflater inflater;
    NotificationManager notifyManager;

    @Override
    protected void onCreate (Bundle savedInstanceState) {
        // TODO Auto-generated method stub         super.onCreate (savedInstanceState);
        setContentView (R.layout.layout_test);
        textView1 = (TextView) findViewById (R.id.textView1);
        textView2 = (TextView) findViewById (R.id.textView2);
        imageView1 = (ImageView) findViewById (R.id.imageView1);
        name = getString (R.string.app_name);
        icLauncher = getResources () .getDrawable (R.id.ic_launcher);
        locManager = (LocationManager) getSystemService (Activity.LOCATION_SERVICE);
        inflater = (LayoutInflater) getSystemService (Activity.LAYOUT_INFLATER_SERVICE);
        notifyManager = (NotificationManager) getSystemService (Activity.NOTIFICATION_SERVICE);
        textView1.setText ("Hello World! RoboGuice demo");
     }
}

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

  使用 RoboGuice

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

public class TestActivity extends RoboActivity{

    @InjectView (R.id.textView1) TextView textView1;
    @InjectView (R.id.textView2) TextView textView2;
    @InjectView (R.id.imageView1) ImageView imageView1;
    @InjectResource (R.string.app_name) String name;
    @InjectResource (R.drawable.ic_launcher) Drawable icLauncher;
    @Inject LocationManager locManager;
    @Inject LayoutInflater inflater;
    @Inject NotificationManager notifyManager;
    @Override
    protected void onCreate (Bundle savedInstanceState) {
        // TODO Auto-generated method stub         super.onCreate (savedInstanceState);
        setContentView (R.layout.layout_test);
        textView1.setText (name);
    }
}

  這么一對比,我想你肯定明白了為什么要使用 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,你可以任選一個添加到你的項目。

  在 Android 應用程序中,我想我已經做了所有關于 RoboGuice 用法及好處的研究。如過有什么遺漏,請聯系我。在接下來的文章,我會研究其他的函數庫好讓你成為一個既能偷懶又高效的 Android 開發人員。

  翻譯: ImportNew.com - 蔣晨毅

  譯文鏈接: http://www.importnew.com/8415.html

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!