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

  • 相关阅读:
    五大Java开源论坛
    mysql limit,offset 区别
    查询某个字段存在于哪几个表
    C++分享笔记:5X5单词字谜游戏设计
    Linux分享笔记:系统状态检测命令小结
    Linux分享笔记:查看帮助命令 & 常用系统工作命令
    数据结构(C语言)分享笔记:数据结构的逻辑层次、存储层次
    Linux分享笔记:shell终端的介绍
    Java开发学生管理系统
    JAVA使用JDBC连接,修改MySQL数据库(比较乱)
  • 原文地址:https://www.cnblogs.com/wzh206/p/1736329.html
Copyright © 2011-2022 走看看