美文网首页
Android view invalidate()使用

Android view invalidate()使用

作者: 潘傑威 | 来源:发表于2017-08-25 09:56 被阅读0次

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

    invalidate()是用來刷新View的,必須是在UI線程中進行工作。在修改某個view的顯示時,調用invalidate()才能看到重新繪製的界面。invalidate()的調用是把之前的舊的view從主UI線程隊列中pop掉。一個Android 程序默認情況下也只有一個進程,但一個進程下卻可以有許多個線程。

    在這麼多線程當中,把主要是負責控制UI界面的顯示、更新和控件交互的線程稱為UI線程,由於onCreate()方法是由UI線程執行的,所以也可以把UI線程理解為主線程。其餘的線程可以理解為工作者線程。

    invalidate()得在UI線程中被調動,在工作者線程中可以通過Handler來通知UI線程進行界面更新。

    postInvalidate()在工作者線程中被調用

    用invalidate()刷新界面

    new Thread(){

    @Override

    public void run() {

    try {

    Thread.sleep(1000);

    } catch (InterruptedException e) {

    e.printStackTrace();

    }

    super.run();

    runOnUiThread(new Runnable() {

    @Override

    public void run() {

    mRootView.invalidate(UPDATE_MODE_FULL_GC16);

    }

    });

    }

    }.start();

    如果在 oncreate 直接呼叫是無法動作的

    需用 Thread 去跑

    相关文章

      网友评论

          本文标题:Android view invalidate()使用

          本文链接:https://www.haomeiwen.com/subject/ldwlwttx.html