最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

android中Invalidate和postInvalidate的更新view區(qū)別

 更新時間:2013年01月08日 16:31:24   作者:  
Android中實現(xiàn)view的更新有兩組方法,一組是invalidate,另一組是postInvalidate,其中前者是在UI線程自身中使用,而后者在非UI線程中使用,感興趣的朋友可以了解下哦
Android中實現(xiàn)view的更新有兩組方法,一組是invalidate,另一組是postInvalidate,其中前者是在UI線程自身中使用,而后者在非UI線程中使用。

Android提供了Invalidate方法實現(xiàn)界面刷新,但是Invalidate不能直接在線程中調(diào)用,因為他是違背了單線程模型:Android UI操作并不是線程安全的,并且這些操作必須在UI線程中調(diào)用。

Android程序中可以使用的界面刷新方法有兩種,分別是利用invalidate和利用postInvalidate()來實現(xiàn)在線程中刷新界面。

1,利用invalidate()刷新界面
實例化一個Handler對象,并重寫handleMessage方法調(diào)用invalidate()實現(xiàn)界面刷新;而在線程中通過sendMessage發(fā)送界面更新消息。
復(fù)制代碼 代碼如下:

// 在onCreate()中開啟線程
new Thread(new GameThread()).start();、
// 實例化一個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();
}
}
}
}

2,使用postInvalidate()刷新界面
使用postInvalidate則比較簡單,不需要handler,直接在線程中調(diào)用postInvalidate即可。
復(fù)制代碼 代碼如下:

class GameThread implements Runnable {
public void run() {
while (!Thread.currentThread().isInterrupted()) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
// 使用postInvalidate可以直接在線程中更新界面
mGameView.postInvalidate();
}
}
}
View 類中postInvalidate()方法源碼如下,可見它也是用到了handler的:
public void postInvalidate() {
postInvalidateDelayed(0);
}

public void postInvalidateDelayed(long delayMilliseconds) {
// We try only with the AttachInfo because there's no point in invalidating
// if we are not attached to our window
if (mAttachInfo != null) {
Message msg = Message.obtain();
msg.what = AttachInfo.INVALIDATE_MSG;
msg.obj = this;
mAttachInfo.mHandler.sendMessageDelayed(msg, delayMilliseconds);
}
}

除了onCreate()不是運行在UI線程上的,其實其他大部分方法都是運行在UI線程上的,其實只要你沒有開啟新的線程,你的代碼基本上都運行在UI線程上。

相關(guān)文章

  • Android自動攔截與接聽功能APK黑白名單

    Android自動攔截與接聽功能APK黑白名單

    大家好,本篇文章主要講的是Android自動攔截與接聽功能APK黑白名單,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2021-12-12
  • RecyclerVIew實現(xiàn)懸浮吸頂效果

    RecyclerVIew實現(xiàn)懸浮吸頂效果

    這篇文章主要為大家詳細介紹了RecyclerVIew實現(xiàn)懸浮吸頂效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • Android 中Crash時如何獲取異常信息詳解及實例

    Android 中Crash時如何獲取異常信息詳解及實例

    這篇文章主要介紹了Android 中Crash時如何獲取異常信息詳解及實例的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • 淺談Android的Lifecycle源碼分析

    淺談Android的Lifecycle源碼分析

    這篇文章主要介紹了淺談Android的Lifecycle源碼分析,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • Kotlin FrameLayout與ViewPager2控件實現(xiàn)滾動廣告欄方法

    Kotlin FrameLayout與ViewPager2控件實現(xiàn)滾動廣告欄方法

    這篇文章主要介紹了Kotlin FrameLayout與ViewPager2控件實現(xiàn)滾動廣告欄,F(xiàn)rameLayout與ViewPager2是Android開發(fā)中非常常見的布局組件,并且它不單單是一個幀布局組件,可以用它實現(xiàn)多種功能,感興趣的朋友一起來看看吧
    2022-12-12
  • Android中使用Post請求的方法

    Android中使用Post請求的方法

    這篇文章主要介紹了Android中使用Post請求的方法,實例分析了Android中使用post請求的原理與具體實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • Android MPAndroidChart開源圖表庫之餅狀圖的代碼

    Android MPAndroidChart開源圖表庫之餅狀圖的代碼

    MPAndroidChart是一款基于Android的開源圖表庫,MPAndroidChart不僅可以在Android設(shè)備上繪制各種統(tǒng)計圖表,而且可以對圖表進行拖動和縮放操作,應(yīng)用起來非常靈活
    2018-05-05
  • 基于Android實現(xiàn)百度地圖定位過程詳解

    基于Android實現(xiàn)百度地圖定位過程詳解

    這篇文章主要介紹了基于Android實現(xiàn)百度地圖定位過程詳解,需要的朋友可以參考下
    2015-11-11
  • 詳解Android中的Menu菜單鍵

    詳解Android中的Menu菜單鍵

    本文給大家介紹Android中的設(shè)置按鈕,長按或點擊菜單鍵,涉及到menu菜單的基本用法,本文介紹非常詳細具有參考價值,特此分享供大家學(xué)習(xí)
    2016-03-03
  • Android詳解之NoHttp最基本使用(無封裝)

    Android詳解之NoHttp最基本使用(無封裝)

    這篇文章主要介紹了Android詳解之NoHttp最基本使用,無封裝,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09

最新評論

四子王旗| 洛扎县| 咸丰县| 遂川县| 吉木乃县| 顺昌县| 日照市| 南乐县| 西昌市| 塔河县| 永春县| 汤阴县| 马公市| 蕉岭县| 额济纳旗| 浦江县| 云霄县| 沭阳县| 横峰县| 建水县| 泊头市| 台北市| 普洱| 疏附县| 同仁县| 祁连县| 伽师县| 理塘县| 吉隆县| 精河县| 攀枝花市| 修武县| 舟山市| 荥阳市| 米脂县| 会泽县| 镇平县| 梅河口市| 维西| 茌平县| 安平县|