Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android多線程及主UI更新

Android多線程及主UI更新

編輯:關於Android編程

Android多線程及主UI更新,解決問了JS和android數據交互,JS代碼不執行的問題。

  mHandler=new Handler();
  mHandler.post(new Runnable(){
  void run(){
  //執行代碼...
  }
  });
  這個線程其實是在UI線程之內運行的,並沒有新建線程。
  常見的新建線程的方法是:
  Thread thread = new Thread();
  thread.start();
  HandlerThread thread = new HandlerThread("string");

  thread.start();

//加載所有的數據 備注:在android 17版本之後必須通過 @JavascriptInterface 注解實現,
//否則會出現"Uncaught TypeError: Object [object Object] has no method 'userList'",
//source: file:///android_asset/user.html (31)
//這個方法是在網頁中調用的onload="javascript:csdn.userList()"
@JavascriptInterface
public void userList() {
handler.post(new Runnable() {
@Override
public void run() {
try {
//獲得List數據集合
List list = footmcservice.getPersonList();

//json格式數據轉換
JSONArray jsonArray =new JSONArray();
for(FootMarkContent person :list)
{
JSONObject json =new JSONObject();
json.put("id", person.getId());
json.put("name", person.getName());
json.put("mobile",person.getMobile());

jsonArray.put(json);
}

// 把json數組轉換成字符串
String jsonstr = jsonArray.toString();
Log.i("MainActivity", "返回給前端數據:"+jsonstr);

// 調用網頁中的javascript中的show函數
wv_footcontent.loadUrl("javascript:show('" + jsonstr + "')");

Log.i("MainActivity", "前端拿到的數據:"+jsonstr);

} catch (JSONException e) {
e.printStackTrace();
}

}
});
}


// 打電話 備注:在android17版本之後必須通過 @JavascriptInterface 注解實現,否則會出現bug(詳見異常)
//這個方法是在網頁中調用的:"+ jsonobjs[y].name + "
@JavascriptInterface
public void call(final String phone) {
//處理的操作要在hanlder中處理
handler.post(new Runnable() {
@Override
public void run() {
//這裡要實現打電話的操作,必須添加打電話的權限
startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phone)));
}
});

}

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved