1. 程式人生 > >Android學習筆記(四四) 第三方Java庫的使用

Android學習筆記(四四) 第三方Java庫的使用

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               

Java有很多第三方庫。Android的Dalvik虛擬器不完全是Java,也就是Android SDK和傳統的SDK不完全一樣,如果Java庫相容Android,則可被利用。Java庫使用受限於下面因素:

  • 目標平臺:Java程式碼適配版本是否比Android基於的Java版本更高。是否用了Android不支援的Java SE的API,例如Swing、AWT圖形。
  • Size:為桌面或者伺服器設計的Java程式碼不需要考慮儲存和記憶體空間,Android需要,使用第三方Java程式碼,可能會是應用Size無法容忍。
  • 效能:Java程式碼是否要消耗Android裝置所能提供的CPU。
  • 介面:Java程式碼是否需要console介面,或者可以包裝我們自己介面中的單純API。

解決方式之一是使用開源java程式碼,使他們變得更適合Android。例如只需使用10%的第三方庫,可以重新編譯,去除不必要的類。

不是所有的Java程式碼可以在Android或者Dalvik上執行,Android沒有提供某些在Java SE/ME/EE上的API,例如圖形相關的Swing和AWT。此外Java程式碼可以依賴其他Java程式碼,例如Jar中依賴不同於Android整合的Apache HttpComponents,可能會引發相容問題。在這些情況下,當我們引入第三方jar包進行編譯的時候沒有問題,但是在執行應用是出錯。因此使用開原始碼是最好的解決方案。

有兩種方法整合第三方程式碼,使用原始碼或者使用預先封裝好的jar。如果使用原始碼,將其放入我們程式碼樹中一起編譯。下面介紹使用jar的方式。

加入第三方jar

如果使用現成的jar,將jar放在Android專案的libs/目錄下,在命令列ant的編譯方式中,會自動將查詢libs/的jar文件。如果使用IDE開發,例如Eclipse,需要將JAR加入到bulid path中。在左邊樹狀列表中,點選所需載入jar的專案,按右鍵->Build Path –>Add External Archives…,加入jar包即可。

在例子中,使用BeanShell的bsh-core-2.0b4.jar,BeanShell是提供指令碼方式,可以按java的語句格式來編寫指令碼。下載,並安裝後,在Eclipse成功加入jar文件,如右圖所示。BeanShell使用很簡單,將在例子中建設。

原始碼

加入jar後,其他和常規的做法沒有什麼區別,程式碼如下:

 ... ...
import bsh.Interpreter;  //可通過 Ctrl + Shif + O自動加上

public class Chapter24Test1 extends Activity{ 
    //BeanShell使用步驟1:建立一個BeanShell Interpreter的例項
    private Interpreter i = new Interpreter();
    
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.chapter_24_test1);
        Button button = (Button)findViewById(R.id.c24_eval);
        final EditText  script = (EditText)findViewById(R.id.c24_script);

        button.setOnClickListener(new View.OnClickListener() { 
            public void onClick(View v) { 
                String src= script.getText().toString();
                try{
                    //BeanShell第2步:設定指令碼的全域性 
                    i.set("context",Chapter24Test1.this);
                    //BeanShell第3步:設定指令碼,可選的獲取指令碼的最後狀態。  
                    i.eval(src);

                }catch(bsh.EvalError e){
                    Log.e("WEI","Error : " + e.toString()); 
                }
            }
        });
    }

}

在Android上使用能夠BeanShell是有限制的,不是所有的指令碼語言都能正常工作,例如那些對JIT有獨特格式的指令碼,此外不是所有的Java API都在Dalvik中有效。沒有JIT的腳步將比編譯為Dalvik應用慢,慢回事使用者體驗呆滯,並消耗更多的電池能量,因此除非很簡單,一般般在BeanShell中建立整個Android應用。BeanShell指令碼可以處理Android底層安全模式執行的所有事情,例如如果應用設定了READ_CONTACTS許可權,那麼應用中任何的BeanShell指令碼就有相同的許可權。另外,BeanShell最小的Core包也有140K,和應用處理的事情來講,體積太大,消耗儲存太多,下載時間更長。

相關連結:我的Andriod開發相關文章

           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述