Android 总结4种线程中操作UI界面的技巧
发布时间:2021-11-25 17:53:00 所属栏目:教程 来源:互联网
导读:我们经常会在后台线程中去做一些耗时的操作,比如去网络取数据。但是当数据取回来,需要显示到页面上的时候,会遇到一些小麻烦,因为我们都知道,Android的UI页面是不允许在其他线程直接操作的。下面总结4中方法用来在线程中操作UI界面。 方法一:Handler 子
我们经常会在后台线程中去做一些耗时的操作,比如去网络取数据。但是当数据取回来,需要显示到页面上的时候,会遇到一些小麻烦,因为我们都知道,Android的UI页面是不允许在其他线程直接操作的。下面总结4中方法用来在线程中操作UI界面。 方法一:Handler 子线程调用Handler的sendMessage(message)发送事件。 mHandler = new Handler() { @Override public void handleMessage(Message msg) { //操作界面 myText.setText( 来自网络的信息); super.handleMessage(msg); } }; public class MyThread extends Thread { public void run() { // 耗时操作 loadNetWork(); Message msg = new Message(); mHandler.sendMessage(msg);//向Handler发送消息, } } 方法二:View.post(Runnable ) public void onClick( View v ) { new Thread( new Runnable() { public void run() { // 耗时操作 loadNetWork(); myText.( new Runnable() { myText.setText( 来自网络的信息); }); } }).start(); } 方法三:Activity.runOnUiThread(Runnable ) 与view.post类似 public void onClick( View v ) { new Thread( new Runnable() { public void run() { // 耗时操作 loadNetWork(); Activity.runOnUiThread.( new Runnable() { myText.setText( 来自网络的信息); }); } }).start(); } 方法四:AsyncTask //UI线程中执行 new DownloadImageTask().execute( "www.linuxidc.com" ); private class LoadTask extends AsyncTask { protected String doInBackground( String... url ) { return loadDataFormNetwork( url[0] );//后台耗时操作 } protected void onPostExecute( String result ) { myText.setText( result ); //得到来自网络的信息刷新页面 } (编辑:开发网_开封站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |