Java和安卓是兩個技術(shù)領(lǐng)域里面比較熱門的一個,兩者之間的交互是非常重要的。
在安卓應(yīng)用程序中,Java代碼通過Android SDK(Software Development Kit)和NDK(Native Development Kit)來與本地操作系統(tǒng)進(jìn)行交互。Java代碼運(yùn)行在虛擬機(jī)上(Dalvik或ART),可以直接調(diào)用NDK代碼。反過來,NDK代碼可以使用JNI(Java Native Interface)庫來調(diào)用Java層的一些對象和API。
public class MainActivity extends Activity { private EditText editText; private Button button; public native String getNativeString(); static { System.loadLibrary("NativeCode"); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText = (EditText) findViewById(R.id.editText); button = (Button) findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String nativeString = getNativeString(); editText.setText(nativeString); } }); } }
上述例子中,在Java代碼中定義了一個本地方法getNativeString(),然后在onCreate()方法中,使用靜態(tài)代碼塊加載了一個名為“NativeCode”的本地庫。在點(diǎn)擊Button時,就會調(diào)用getNativeString()方法獲取本地的字符串,并將獲取到的字符串填充到EditText中。
這種方式可以使Java和安卓之間進(jìn)行雙向交互,Java可以調(diào)用安卓的API,安卓可以使用JNI庫調(diào)用Java的一些方法來實(shí)現(xiàn)一些復(fù)雜的業(yè)務(wù)邏輯。