android 刷新View

来源:互联网 发布:java 重用命令 编辑:程序博客网 时间:2024/05/21 17:47

/** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState)
 {
  super.onCreate(savedInstanceState);

  /* 实例化GameView对象 */
  this.mGameView = new GameView(this);

  // 设置显示为我们自定义的View(GameView)
  setContentView(mGameView);

  // 开启线程
  new Thread(new GameThread()).start();
 }

 Handler myHandler = new Handler()
 {
  //接收到消息后处理
  public void handleMessage(Message msg)
  {
   switch (msg.what)
   {
   case Activity01.REFRESH:
    mGameView.invalidate();
    break;
   }
   super.handleMessage(msg);
  }   
 };

 class GameThread implements Runnable
 {
  public void run()
  {
   while (!Thread.currentThread().isInterrupted())
   {
    Message message = new Message();
    message.what = Activity01.REFRESH;
    //发送消息
    Activity01.this.myHandler.sendMessage(message);
    try
    {
     Thread.sleep(100);
    }
    catch (InterruptedException e)
    {
     Thread.currentThread().interrupt();
    }
   }
  }
 }
 /**
  * 当然可以将GameThread类这样写
  * 同样可以更新界面,并且不在需要
  * Handler在接受消息
 class GameThread implements Runnable
 {
  public void run()
  {
   while (!Thread.currentThread().isInterrupted())
   {
    try
    {
     Thread.sleep(100);
    }
    catch (InterruptedException e)
    {
     Thread.currentThread().interrupt();
    }
    //使用postInvalidate可以直接在线程中更新界面
    mGameView.postInvalidate();
   }
  }
 }

原创粉丝点击