文章插圖

文章插圖
1,通過Handler機制.主線程中定義Handler,子線程發消息,通知Handler完成UI更新,Handler對象必須定義在主線程中,如果是多個類直接互相調用,就不是很方便,需要傳遞content對象或通過接口調用 。
private void one() {handler=new Handler(){@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);switch (msg.what){case 123:tv.setText(""+msg.obj);break;}}};new Thread(){@Overridepublic void run() {super.run();for (int i=0;i<3;i++){try {sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}Message message=new Message();message.what=123;message.obj="通過Handler機制";handler.sendMessage(message);}}.run();}2,runOnUiThread方法用Activity對象的runOnUiThread方法更新,在子線程中通過runOnUiThread()方法更新UI,強烈推薦使用 。
private void two(){new Thread(){@Overridepublic void run() {super.run();for (int i=0;i<3;i++){try {sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}runOnUiThread(new Runnable() {@Overridepublic void run() {tv.setText("通過runOnUiThread方法");}});}}.run();}3,View.post(Runnable r)這種方法更簡單,但需要傳遞要更新的View過去,推薦使用
private void three(){new Thread(){@Overridepublic void run() {super.run();for (int i=0;i<3;i++){try {sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}tv.post(new Runnable() {@Overridepublic void run() {tv.setText("通過View.post(Runnable r) 方法");}});}}.run();}4,AsyncTask【android線程間通信方式 Android線程通信】
private void four(){new MyAsyncTask().execute("通過AsyncTask方法");}private class MyAsyncTask extends AsyncTask{@Overrideprotected Object doInBackground(Object[] objects) {for (int i=0;i<3;i++){try {sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}return objects[0].toString();}@Overrideprotected void onPostExecute(Object o) {super.onPostExecute(o);tv.setText(o.toString());}}
- android 布局適配 androidstudio網格布局
- 女人喝綠茶的最佳時間
- 中藥一天喝兩次的時間
- 男女之間什么算是曖昧 兩人有曖昧的表現
- 春運火車票今起開售 春節期間火車票
- 這些雙手間的小動作可以緩解疲勞
- 這些事做對時間養生效果才能加倍
- 地漏一旦安裝好了還能換嗎
- 地漏芯可以卸掉嗎
- 裝修的地漏如何選
