国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術文章
文章詳情頁

android實現線程間通信的四種常見方式

瀏覽:2日期:2022-09-18 17:26:27
1,通過Handler機制

主線程中定義Handler,子線程發消息,通知Handler完成UI更新,Handler對象必須定義在主線程中,如果是多個類直接互相調用,就不是很方便,需要傳遞content對象或通過接口調用。 另外Handler機制與Activity生命周期不一致的原因,容易導致內存泄漏,不推薦使用。

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方法

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(); }

用Activity對象的runOnUiThread方法更新,在子線程中通過runOnUiThread()方法更新UI,強烈推薦使用。

3,View.post(Runnable r) 、

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(); }

這種方法更簡單,但需要傳遞要更新的View過去,推薦使用

4,AsyncTask

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實現線程間通信的四種常見方式的文章就介紹到這了,更多相關android 線程間通信內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Android
相關文章:
主站蜘蛛池模板: 恩施市| 呼玛县| 石首市| 漠河县| 昌宁县| 岐山县| 波密县| 兰坪| 大竹县| 阳高县| 汶上县| 大厂| 辛集市| 庄河市| 突泉县| 略阳县| 津南区| 福贡县| 昌都县| 缙云县| 阿尔山市| 临洮县| 绿春县| 喀喇沁旗| 涪陵区| 保定市| 邛崃市| 施秉县| 辽阳县| 贵州省| 永川市| 石河子市| 丹阳市| 巴东县| 鸡西市| 本溪市| 昌江| 贵阳市| 龙泉市| 法库县| 普宁市|