Android中刷新界面的二种方法

拼搏现实的明天。 2022-07-12 07:28 283阅读 0赞

利用Handler刷新界面

实例化一个Handler对象,并重写handleMessage方法调用invalidate()实现界面刷新;而在线程中通过sendMessage发送界面更新消息。

代码如下:
// 在onCreate()中开启线程

  1. new Thread(new GameThread()).start();
  2. // 实例化一个handler
  3. Handler myHandler = new Handler() {
  4. //接收到消息后处理
  5. public void handleMessage(Message msg) {
  6. switch (msg.what) {
  7. case Activity01.REFRESH:
  8. mGameView.invalidate();//刷新界面
  9. break;
  10. }
  11. super.handleMessage(msg);
  12. }
  13. };
  14. class GameThread implements Runnable {
  15. public void run() {
  16. while (!Thread.currentThread().isInterrupted()) {
  17. Message message = new Message();
  18. message.what = Activity01.REFRESH;
  19. //发送消息
  20. Activity01.this.myHandler.sendMessage(message);
  21. try {
  22. Thread.sleep(100);
  23. }
  24. catch (InterruptedException e) {
  25. Thread.currentThread().interrupt();
  26. }
  27. }
  28. }
  29. }

使用postInvalidate()刷新界面

使用postInvalidate则比较简单,不需要handler,直接在线程中调用postInvalidate即可。

代码如下:

  1. class GameThread implements Runnable {
  2. public void run() {
  3. while (!Thread.currentThread().isInterrupted()) {
  4. try {
  5. Thread.sleep(100);
  6. }
  7. catch (InterruptedException e) {
  8. Thread.currentThread().interrupt();
  9. } // 使用postInvalidate可以直接在线程中更新界面
  10. mGameView.postInvalidate();
  11. }
  12. }
  13. }

发表评论

表情:
评论列表 (有 0 条评论,283人围观)

还没有评论,来说两句吧...

相关阅读