android線程間通信有哪些方式?用Activity對象的runOnUiThread方法更新,在子線程中通過runOnUiThread()方法更新UI,強烈推薦使用,今天小編就來聊一聊關于android線程間通信有哪些方式?接下來我們就一起去研究一下吧!
private void one() { handler=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what){ case 123: tv.setText("+msg.obj); break; } } }; new Thread(){ @Override public 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(){ @Override public void run() { super.run(); for (int i=0;i<3;i++){ try { sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } runOnUiThread(new Runnable() { @Override public void run() { tv.setText("通過runOnUiThread方法"); } }); } }.run(); }
3,View.post(Runnable r)
這種方法更簡單,但需要傳遞要更新的View過去,推薦使用
private void three(){ new Thread(){ @Override public void run() { super.run(); for (int i=0;i<3;i++){ try { sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } tv.post(new Runnable() { @Override public void run() { tv.setText("通過View.post(Runnable r) 方法"); } }); } }.run(); }
4,AsyncTask
private void four(){ new MyAsyncTask().execute("通過AsyncTask方法"); }private class MyAsyncTask extends AsyncTask{ @Override protected Object doInBackground(Object[] objects) { for (int i=0;i<3;i++){ try { sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } return objects[0].toString(); } @Override protected void onPostExecute(Object o) { super.onPostExecute(o); tv.setText(o.toString()); } }
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!