zoukankan      html  css  js  c++  java
  • Handler理解

    Android UI操作并不是线程安全的并且这些操作必须在UI线程中执行。常用的方法是利用Handler来实现UI线程的更新的。

     

    package com.handler;

    import android.content.Context;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.graphics.Point;
    import android.graphics.drawable.Drawable;
    import android.view.View;

    public class TestView extends View {
        float x = 40;
        public TestView(Context context) {
             super(context);
        }

        @Override
        protected void onDraw(Canvas canvas) {
            x+=5;
            Paint mPaint = new Paint();
            mPaint.setAntiAlias(true);
            mPaint.setColor(Color.GREEN);
            canvas.drawCircle(x, 100, 100, mPaint);
        }
    }
     

    public class TestHandler extends Activity { 
         protected static final int GUIUPDATEIDENTIFIER = 0x101;  
         TestView myView = null;  
         Handler myHandler = new Handler() { 
              public void handleMessage(Message msg) {  
                   switch (msg.what) {  
                        case TestHandler.GUIUPDATEIDENTIFIER:  
                             myView.invalidate(); 
                             break;  
                   }  
                   super.handleMessage(msg);  
              }  
         }; 
         public void onCreate(Bundle savedInstanceState) {  
              super.onCreate(savedInstanceState);  
              this.requestWindowFeature(Window.FEATURE_NO_TITLE);  
              this.myBounceView = new BounceView(this); 
              this.setContentView(this.myBounceView);  
              new Thread(new TestThread()).start(); 
         }  
         class TestThread implements Runnable {  
              public void run() { 
                   while (!Thread.currentThread().isInterrupted()) {   
                        Message message = new Message();  
                        message.what = TestHandler.GUIUPDATEIDENTIFIER;  
                        TestHandler.this.myHandler.sendMessage(message);  
                        try {  
                             Thread.sleep(100);   
                        } catch (InterruptedException e) {  
                             Thread.currentThread().interrupt();  
                        }  
                   }  
              }  
         }  
    }

  • 相关阅读:
    Need to know which polygon shell contains a given face
    静默安装 Microsoft Visual C++ 运行库
    python linecache模块 读取文件行使用注意事项
    不运行 maya 就可以获取 maya 版本,在 python 中获取
    linux setfacl chmod g+s 修改文件夹和文件的默认访问权限和所属组
    Maya material & shading groups 相互获取对应的彼此
    PyQt PySide 查询内置可用的 style
    maxscript 在长时间的运算中卡主,白屏的解决方法 windows.processPostedMessages()
    QProcessBar setFormat 设置进度格式
    MaxPlus WStr Python 中的字符串传递给 MaxPlus
  • 原文地址:https://www.cnblogs.com/wzh206/p/1736329.html
Copyright © 2011-2022 走看看