自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Android兩種實(shí)現(xiàn)界面的刷新操作的方法

移動(dòng)開發(fā) Android
Android提供了Invalidate方法實(shí)現(xiàn)界面刷新,但是Invalidate不能直接在線程中調(diào)用,因?yàn)樗沁`背了單線程模型:Android UI操作并不是線程安全的,并且這些操作必須在UI線程中調(diào)用。 Android程序中可以使用的界面刷新方法有兩種,分別是利用Handler和利用postInvalidate()來實(shí)現(xiàn)在線程中刷新界面。

利用Handler刷新界面

實(shí)例化一個(gè)Handler對(duì)象,并重寫handleMessage方法調(diào)用invalidate()實(shí)現(xiàn)界面刷新;而在線程中通過sendMessage發(fā)送界面更新消息。

  1. // 在onCreate()中開啟線程 
  2.        new Thread(new GameThread()).start();、 
  3.   
  4.  
  5.        // 實(shí)例化一個(gè)handler 
  6.        Handler myHandler   = new Handler()  
  7.        { 
  8.               //接收到消息后處理 
  9.               public void handleMessage(Message msg) 
  10.               { 
  11.                      switch (msg.what) 
  12.                      { 
  13.                      case Activity01.REFRESH: 
  14.                             mGameView.invalidate();        //刷新界面 
  15.                             break
  16.                      } 
  17.                      super.handleMessage(msg); 
  18.               }                    
  19.        }; 
  20.   
  21.  
  22.        class GameThread implements Runnable 
  23.        { 
  24.               public void run() 
  25.               { 
  26.                      while (!Thread.currentThread().isInterrupted()) 
  27.                      { 
  28.                             Message message = new Message(); 
  29.                             message.what = Activity01.REFRESH; 
  30.                             //發(fā)送消息 
  31.                             Activity01.this.myHandler.sendMessage(message); 
  32.                             try 
  33.                             { 
  34.                                    Thread.sleep(100); 
  35.                             } 
  36.                             catch (InterruptedException e) 
  37.                             { 
  38.                                    Thread.currentThread().interrupt(); 
  39.                             } 
  40.                      } 
  41.               } 
  42.  
  43.        } 

使用postInvalidate()刷新界面

使用postInvalidate則比較簡(jiǎn)單,不需要handler,直接在線程中調(diào)用postInvalidate即可。

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

 

責(zé)任編輯:張葉青 來源: feisky博客園
相關(guān)推薦

2012-10-16 09:40:38

洗牌算法

2010-10-14 14:33:15

MySQL多表聯(lián)查

2011-08-09 13:50:01

iPhone動(dòng)畫UIView

2010-09-28 15:12:27

Javascript

2022-02-09 07:03:01

SpringNacos服務(wù)注冊(cè)

2010-04-25 17:34:30

負(fù)載均衡實(shí)現(xiàn)

2010-01-21 11:13:29

Linux桌面計(jì)算器

2020-09-23 09:24:01

堆棧開發(fā)實(shí)現(xiàn)

2011-06-23 09:07:16

2017-11-16 09:20:20

內(nèi)存虛擬化技術(shù)

2022-02-21 08:18:38

option編程模式

2010-07-14 10:30:26

Perl多線程

2010-09-17 09:37:27

Java安裝方法

2021-12-08 10:47:35

RabbitMQ 實(shí)現(xiàn)延遲

2009-09-25 14:04:09

Hibernate eHibernate h

2011-03-03 17:00:37

pure-ftpdchroot

2010-11-19 11:57:15

Oracle密碼丟失

2021-10-09 09:15:01

Windows 11安全模式系統(tǒng)

2010-03-18 08:55:50

C#

2015-04-30 08:00:05

數(shù)據(jù)中心多種操作系統(tǒng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)