更新UI的四种方式
2015-05-31 20:27
453 查看
布局文件中只有一个TextView所以在此处不再给出.
下面给出java代码:
下面给出java代码:
package com.example.handler_test2; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.widget.TextView; public class Five extends Activity { private TextView textView; private Handler handler = new Handler() { public void handleMessage(android.os.Message msg) { textView.setText("ok"); }; }; private void handler1(){ // post方法执行runnable中的代码 handler.post(new Runnable() { /* * public final boolean post(Runnable r){ * return sendMessageDelayed(getPostMessage(r),0); * } * private static Message getPostMessage(Runnable){ * Message m= Message.obtain(); * m.callback = r; * return m; * } * */ @Override public void run() { textView.setText("ok"); } }); } // private void handler2(){ handler.sendEmptyMessage(1); } private void updateUI(){ /*public final void runOnUiThread(Runnable action){ if(Thread.currentThread()! = mUiThread){ mHandler.post(action); }else{ action.run(); } }*/ runOnUiThread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub textView.setText("ok"); } }); } private void viewUI(){ /*public boolean post(Runnable action){ final AttachInfo attachInfo = mAttachInfo; if(attachInfo ! = null){ return attachInfo.mHandler.post(action); } ViewRootInpl.getRunQueue().post(action); return true; }*/ textView.post(new Runnable() { @Override public void run() { // TODO Auto-generated method stub textView.setText("ok"); } }); } @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.five); textView = (TextView) findViewById(R.id.textView); new Thread() { public void run() { try { Thread.sleep(2000); // handler1(); // handler2(); // updateUI(); viewUI(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } }; }.start(); } }代码中大段的注释代码均为方法的源代码:以便读者更好的理解.其实方法的本质还是sendMessage方法.
相关文章推荐
- build-root-2012编译时遇到的问题
- URAL 1183.Brackets Sequence ( DP+记录路径)
- iOS通过CAShapeLayer和UIBezierPath画环形进度条
- 3种特殊流程控制语句
- PHP中include和require的区别详解
- 快排(QuickSort)的java语言的实现
- 【转】判断UIViewController是否正在显示
- poj-1947 Rebuilding Roads
- Android L 新增UI控件:RecyclerView CardView的简单使用
- UINavigationBar基本设置
- UIButton和UIImageView的区别
- jquer匹配
- jquer兄弟节点问题(购物评价星星)
- jquer多条件选择
- IOS 屏幕截图 UIScrollview
- QT5.3 杂记 Qt5下,QWidget系列从QtGui中被剥离出去,成为单独的QtWidget模块。随着Qt Quick2的引入,QtDeclarative也逐渐和QWidget系列也脱离关系。
- Auto Layout 使用心得(五)—— 根据文字、图片自动计算 UITableViewCell 高度
- hdu 1509 Windows Message Queue (简单STL的优先队列应用)
- 四位数码管SH5461AS的问题,arduino学习实测.
- 杭电 1005 Number Sequence