中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-04-03 10:18:38 來源:網絡 閱讀:321 作者:大水牛牛 欄目:移動開發

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

有許多第三方的庫、框架和解決方案可供我們使用。出于種種原因,我們并不知道這些庫或者知道但還沒用過。有的開發者開發了自己定義的庫或者并不想使用第三方的庫。如果我們在應用程序開發的過程中使用一些第三方庫,也許可以提高程序的可兼容性、漂亮的UI界面、讓代碼變得整潔等等。;另外,在Android應用開發過程中,我們不可能有過多的精力和時間去研究應用安全這塊,要學會借力!所以最好的辦法就是借助第三方平臺的解決方案,這樣既可以節省下很多時間又可以保證應用的安全,偷懶又高效,兩全其美!

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

什么是依賴注入?

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

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

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

RoboGuice:

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

  • http://repo1.maven.org/maven2/org/roboguice/roboguice/2.0/roboguice-2.0.jar

  • http://repo1.maven.org/maven2/com/google/inject/guice/3.0/guice-3.0-no_aop.jar

  • http://repo1.maven.org/maven2/com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.jar

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

實例

<span ><span >public class TestActivity extends Activity{
 
    TextView textView1;
    TextView textView2;
    ImageView p_w_picpathView1;
    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);
        p_w_picpathView1 = (ImageView) findViewById(R.id.p_w_picpathView1);
        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");
     }
}</span></span>

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

使用RoboGuice

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

<span ><span >public class TestActivity extends RoboActivity{
 
    @InjectView(R.id.textView1) TextView textView1;
    @InjectView(R.id.textView2) TextView textView2;
    @InjectView(R.id.p_w_picpathView1) ImageView p_w_picpathView1;
    @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);
    }
}</span></span>

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


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

正定县| 丹凤县| 威信县| 嘉鱼县| 芮城县| 红桥区| 永济市| 西乌| 寿阳县| 元朗区| 西充县| 石渠县| 蒙阴县| 富锦市| 黄平县| 海伦市| 黑水县| 伊通| 黄山市| 金堂县| 漳浦县| 张掖市| 绥化市| 光泽县| 邵武市| 西华县| 勐海县| 疏附县| 彩票| 肥乡县| 东辽县| 顺平县| 达尔| 合川市| 合肥市| 宁安市| 龙井市| 宜丰县| 卓资县| 阳山县| 上栗县|