android 之 Handler 详解----(三)更新UI的方法
2015-05-06 20:07
471 查看
对子线程更新UI的方法进行了了解,大概可以分以下几种方式,其实本质上都是通过Handler来对UI进行更新,只是变表现手法有所不同。
1. 通过UI 线程中的 handler.post (new runnable(){ }) 的方法进行UI的更新;
2. 常见的handler.sendMessage()
3. runOnUiThread(new runnable(){}) 进行UI的更新;
4. View.post(new Runnable(){})进行UI的更新
下面用代码进行各种更新方法实现:
代码中分了四个按键进行操作,每个按键都会起一个子线程,并进行更新UI的操作
四种方法,都一一展现出来
1. 通过UI 线程中的 handler.post (new runnable(){ }) 的方法进行UI的更新;
2. 常见的handler.sendMessage()
3. runOnUiThread(new runnable(){}) 进行UI的更新;
4. View.post(new Runnable(){})进行UI的更新
下面用代码进行各种更新方法实现:
代码中分了四个按键进行操作,每个按键都会起一个子线程,并进行更新UI的操作
四种方法,都一一展现出来
package com.example.handleruidemo; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class MainActivity extends Activity implements OnClickListener { private Button handlerPost, handlerSendMsg, runUiThread, viewPost; private TextView tV; private Handler handlerPostHandler = new Handler(); private Handler handlerSendMsgHandler = new Handler() { public void handleMessage(Message msg) { if (msg.what == 1) { tV.setText("handlerSendMsg OK"); } }; }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { handlerPost = (Button) findViewById(R.id.handlerPost); handlerSendMsg = (Button) findViewById(R.id.handSendmessage); runUiThread = (Button) findViewById(R.id.runUiThread); viewPost = (Button) findViewById(R.id.ViewPost); tV = (TextView) findViewById(R.id.textView1); handlerPost.setOnClickListener(this); handlerSendMsg.setOnClickListener(this); runUiThread.setOnClickListener(this); viewPost.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { // 利用UI的handler的 Post方法 case R.id.handlerPost: new Thread() { public void run() { System.out.println(Thread.currentThread().getName() + "------ handlerPost"); //重点在这里 handlerPostHandler.post(new Runnable() { @Override public void run() { // 实际运行就是在UI线程,所以可以更新UI操作 System.out.println(Thread.currentThread().getName()+ "---handlerPost check"); tV.setText("handlerPost OK"); } }); }; }.start(); break; // 一般的 sendMessage的方法 case R.id.handSendmessage: new Thread() { @Override public void run() { System.out.println(Thread.currentThread().getName() + "---handSendMsg Check"); Message msg = new Message(); msg.what = 1; //重点在这里 handlerSendMsgHandler.sendMessage(msg); } }.start(); break; // runUiThread 的方法 case R.id.runUiThread: new Thread() { @Override public void run() { System.out.println(Thread.currentThread().getName()+ "---runUiThread Check"); //重点在这里 runOnUiThread(new Runnable() { public void run() { System.out.println(Thread.currentThread().getName()+ "---runUiThread Check"); tV.setText("runUiThread Check"); } }); } }.start(); break; // ViewPost 的方法和 handler.post的方法有点类似 case R.id.ViewPost: new Thread() { public void run() { System.out.println(Thread.currentThread().getName()+ "------ ViewPost Check"); //重点在这里 tV.post(new Runnable() { @Override public void run() { // 实际运行就是在UI线程,所以可以更新UI操作 System.out.println(Thread.currentThread().getName()+ "---ViewPost check"); tV.setText("ViewPost OK"); } }); }; }.start(); break; default: break; } } }
相关文章推荐
- 利用Handler更新Android UI的另一种方法
- 用Handler更新Android Ui的另一种方法
- Android:UI更新方法一:Handler+View.invalidate+Thread+Runnable
- Android:UI更新方法三:Handler+Worker Thread
- Android 更新UI的两种方法——handler和runOnUiThread()
- android UI更新问题 Thread和Looper以及Handler和Message详解 Android开发必读
- Android 更新UI的两种方法——handler和runOnUiThread()
- Android 更新UI的两种方法——handler和runOnUiThread()
- Android 更新UI的两种方法——handler和runOnUiThread()
- 利用Handler更新Android UI的另一种方法
- Android 更新UI的两种方法——handler和runOnUiThread()
- Android开发之通过Handler的post方法更新UI
- Android 更新UI的两种方法——handler和runOnUiThread()
- Android 更新UI的两种方法——handler和runOnUiThread()
- Android 更新UI的两种方法——handler和runOnUiThread()
- Android 更新UI的两种方法——handler和runOnUiThread()
- Android 更新UI的两种方法——handler和runOnUiThread()
- Android 更新UI的两种方法——handler和runOnUiThread(
- Android 更新UI的两种方法——handler和runOnUiThread()
- Android 更新UI的两种方法——handler和runOnUiThread()