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();  
                        }  
                   }  
              }  
         }  
    }

  • 相关阅读:
    js 字符中 带 函数 再传对象参数
    window server 2012 II8 假陌生 碰到的问题
    IIS 下载文件 报错“401
    easyui使用时出现这个Uncaught TypeError: Cannot read property 'combo' of undefined
    eclipse+gnuarm+使用报错
    mini2440:通过JLink烧写BootLoader到Nor Flash
    在Linux中搭建一个FTP服务器
    SPFA模板
    Bellman_ford模板
    前向星&链式前向星
  • 原文地址:https://www.cnblogs.com/wzh206/p/1736329.html
Copyright © 2011-2022 走看看