锁定老帖子 主题:总结4种线程中操作UI界面的方法
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-08-05
最后修改:2011-08-09
我们经常会在后台线程中去做一些耗时的操作,比如去网络取数据。但是当数据取回来,需要显示到页面上的时候,会遇到一些小麻烦,因为我们都知道,android的UI页面是不允许在其他线程直接操作的。下面总结4中方法用来在线程中操作UI界面。 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发送消息, } }
public void onClick( View v ) {
new Thread( new Runnable() {
public void run() {
// 耗时操作
loadNetWork();
myText.post( new Runnable() {
myText.setText( 来自网络的信息); }); } }).start(); }
public void onClick( View v ) { new Thread( new Runnable() { public void run() { // 耗时操作 loadNetWork(); Activity.runOnUiThread.( new Runnable() { myText.setText( 来自网络的信息); }); } }).start(); }
//UI线程中执行 new DownloadImageTask().execute( "www.91dota.com" );
private class LoadTask extends AsyncTask { protected String doInBackground( String... url ) { return loadDataFormNetwork( url[0] );//后台耗时操作 } protected void onPostExecute( String result ) { myText.setText( result ); //得到来自网络的信息刷新页面 }
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-08-06
方法二,直接调用new Message()生成消息,是会有内存泄漏的..
|
|
返回顶楼 | |
发表时间:2011-08-08
核心就一点:UI更新一定要在主线程中,保证UI的单线程性
|
|
返回顶楼 | |
发表时间:2011-08-09
楼主,你这个标题有歧义啊,我理解成了4种线程了。。。
|
|
返回顶楼 | |
发表时间:2011-08-09
triple_zhao 写道
...... 方法二:View.post(Runnable ) public void onClick( View v ) { new Thread( new Runnable() { public void run() { // 耗时操作 loadNetWork(); myText.( new Runnable() { myText.setText( 来自网络的信息); }); } }).start(); } ...... 这个myText.();是个什么用法? |
|
返回顶楼 | |
发表时间:2011-08-09
myText.post()
打少了 |
|
返回顶楼 | |
发表时间:2011-08-09
moyue 写道
myText.post()
打少了
确实是,不好意思,写的粗糙了
|
|
返回顶楼 | |
发表时间:2011-08-10
木有搞过android,用java的线程等待方式不行么。。
|
|
返回顶楼 | |
发表时间:2011-08-10
不错的哇 这几种方式很实用
|
|
返回顶楼 | |
发表时间:2011-08-10
Caedmon 写道 木有搞过android,用java的线程等待方式不行么。。
不行,子线程不能更新UI界面,只能是子线程发送消息给UI线程,可以不用handle,你可以自己实现,也不难做。 |
|
返回顶楼 | |