java 总结4种线程中操作UI界面的方法
来源:互联网 发布:ov7670 51单片机 编辑:程序博客网 时间:2024/06/16 09:56
我们经常会在后台线程中去做一些耗时的操作,比如去网络取数据。但是当数据取回来,需要显示到页面上的时候,会遇到一些小麻烦,因为我们都知道,android的UI页面是不允许在其他线程直接操作的。下面总结4中方法用来在线程中操作UI界面。方法一:Handler子线程调用Handler的sendMessage(message)发送事件。Java代码 复制代码 收藏代码1.mHandler = new Handler() { 2. @Override 3. public void handleMessage(Message msg) { 4. //操作界面 5. myText.setText( 来自网络的信息); 6. super.handleMessage(msg); 7. } 8. }; mHandler = new Handler() { @Override public void handleMessage(Message msg) { //操作界面 myText.setText( 来自网络的信息); super.handleMessage(msg); } }; Java代码 复制代码 收藏代码1.public class MyThread extends Thread { 2. public void run() { 3. // 耗时操作 4. loadNetWork(); 5. Message msg = new Message(); 6. mHandler.sendMessage(msg);//向Handler发送消息, 7. } 8. } public class MyThread extends Thread { public void run() { // 耗时操作 loadNetWork(); Message msg = new Message(); mHandler.sendMessage(msg);//向Handler发送消息, } }方法二:View.post(Runnable )Java代码 复制代码 收藏代码1.public void onClick( View v ) { 2. new Thread( new Runnable() { 3. public void run() { 4. // 耗时操作 5. loadNetWork(); 6. myText<span style="color: rgb(255, 0, 0); white-space: normal;">.post</span>( new Runnable() { public void onClick( View v ) { new Thread( new Runnable() { public void run() { // 耗时操作 loadNetWork(); myText.post( new Runnable() {Java代码 复制代码 收藏代码1. myText.setText( 来自网络的信息); 2. }); 3. } 4. }).start(); 5.} myText.setText( 来自网络的信息); }); } }).start();}方法三:Activity.runOnUiThread(Runnable )与view.post类似Java代码 复制代码 收藏代码1.public void onClick( View v ) { 2. new Thread( new Runnable() { 3. public void run() { 4. // 耗时操作 5. loadNetWork(); 6. Activity.runOnUiThread.( new Runnable() { 7. myText.setText( 来自网络的信息); 8. }); 9. } 10. }).start(); 11.} public void onClick( View v ) { new Thread( new Runnable() { public void run() { // 耗时操作 loadNetWork(); Activity.runOnUiThread.( new Runnable() { myText.setText( 来自网络的信息); }); } }).start();}方法四:AsyncTask Java代码 复制代码 收藏代码1.//UI线程中执行 2.new DownloadImageTask().execute( "www.91dota.com" ); //UI线程中执行 new DownloadImageTask().execute( "www.91dota.com" ); Java代码 复制代码 收藏代码1.private class LoadTask extends AsyncTask { 2. protected String doInBackground( String... url ) { 3. return loadDataFormNetwork( url[0] );//后台耗时操作 4. } 5. 6. protected void onPostExecute( String result ) { 7. myText.setText( result ); //得到来自网络的信息刷新页面 8. 9. }
- 总结4种线程中操作UI界面的方法
- 总结4种线程中操作UI界面的方法
- 总结4种线程中操作UI界面的方法
- 总结4种线程中操作UI界面的方法
- java 总结4种线程中操作UI界面的方法
- 4种线程中操作UI界面的方法
- Android 总结4种线程中操作UI界面的方法
- Android进阶(二)-------总结4种线程中操作UI界面的方法
- Android 总结4种线程中操作UI界面的方法
- 4种线程中访问Ui界面的方法
- 4种在线程中操作UI的方法
- 线程更新UI界面的4种方法
- 4种线程中操作UI
- android-----在子线程中更新UI操作的方法
- 在子线程中操作Ui的几种小方法
- Android 四种异步操作UI界面的方法
- Activity-四种异步操作UI界面的方法
- Android 四种异步操作UI界面的方法
- android控件
- nyist-219
- ios crash report -- atos symbolicate
- 【IOS】IOS工程自动打包并发布脚本实现
- 检测笔记本电脑的主板,cpu,硬盘的温度
- java 总结4种线程中操作UI界面的方法
- android 基础知识 九
- 检测笔记本电脑的主板,cpu,硬盘的温度
- Android Bitmap类的常用方法
- Linux Shell编程与编辑器使用详解
- java 求和
- 常用Windows消息、常量命名参考
- Windows 7下用xshell4远程控制ubuntu12.04
- MySql常用语句