Android界面刷新的方法分享
Android提供了Invalidate方法實(shí)現(xiàn)界面刷新,但是Invalidate不能直接在線程中調(diào)用,因?yàn)樗沁`背了單線程模型:Android UI操作并不是線程安全的,并且這些操作必須在UI線程中調(diào)用。
Android程序中可以使用的界面刷新方法有兩種,分別是利用Handler和利用postInvalidate()來(lái)實(shí)現(xiàn)在線程中刷新界面。
利用Handler刷新界面
實(shí)例化一個(gè)Handler對(duì)象,并重寫(xiě)handleMessage方法調(diào)用invalidate()實(shí)現(xiàn)界面刷新;而在線程中通過(guò)sendMessage發(fā)送界面更新消息。
// 在onCreate()中開(kāi)啟線程
new Thread(new GameThread()).start();、
// 實(shí)例化一個(gè)handler
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;
//發(fā)送消息
Activity01.this.myHandler.sendMessage(message);
try
{
Thread.sleep(100);
}
catch (InterruptedException e)
{
Thread.currentThread().interrupt();
}
}
}
}
使用postInvalidate()刷新界面
使用postInvalidate則比較簡(jiǎn)單,不需要handler,直接在線程中調(diào)用postInvalidate即可。
class GameThread implements Runnable
{
public void run()
{
while (!Thread.currentThread().isInterrupted())
{
try
{
Thread.sleep(100);
}
catch (InterruptedException e)
{
Thread.currentThread().interrupt();
}
//使用postInvalidate可以直接在線程中更新界面
mGameView.postInvalidate();
}
}
}
相關(guān)文章
Android學(xué)習(xí)筆記(二)之電話撥號(hào)器
目前手機(jī)市場(chǎng)上android已經(jīng)具有強(qiáng)大的霸主地位,吸引了很多的追棒者,android學(xué)習(xí)越來(lái)越火熱,本文給大家介紹android學(xué)習(xí)筆記(二)之電話撥號(hào)器,感興趣的朋友一起學(xué)習(xí)吧2015-11-11Android實(shí)現(xiàn)第三方授權(quán)登錄、分享以及獲取用戶資料
本篇文章介紹了Android實(shí)現(xiàn)第三方授權(quán)登錄、分享以及獲取用戶資料,詳細(xì)的介紹了第三方授權(quán)登錄的實(shí)現(xiàn)代碼,有需要的朋友可以了解一下。2016-11-11Android懸浮窗按鈕實(shí)現(xiàn)點(diǎn)擊并顯示/隱藏多功能列表
這篇文章主要為大家詳細(xì)介紹了Android懸浮窗按鈕實(shí)現(xiàn)點(diǎn)擊并顯示/隱藏多功能列表,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07Android使用Handler實(shí)現(xiàn)打地鼠游戲
這篇文章主要為大家詳細(xì)介紹了Android使用Handler實(shí)現(xiàn)打地鼠游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06Android超詳細(xì)講解彈出多選框的實(shí)現(xiàn)
這篇文章主要介紹了在Android開(kāi)發(fā)中如何實(shí)現(xiàn)彈出多選框的功能,多選框是很常見(jiàn)的操作控件,感興趣的朋友都來(lái)一起看看吧2022-03-03Android中絕對(duì)音量和相對(duì)音量設(shè)置
大家好,本篇文章主要講的是Android中絕對(duì)音量和相對(duì)音量設(shè)置,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下2022-01-01