有没有一种方法可以在不使用可运行对象的情况下使线程无效(更新)屏幕

Ted*_*tel 1 multithreading android android-view

我有一个后台线程休眠 1/10 秒,然后重新循环。我希望它使屏幕无效,因此它将重绘并执行简单的动画。似乎使屏幕无效的唯一方法是在 Runnable 中执行此操作,这假设有很多开销。

有没有一种方法可以在不使用可运行对象的情况下使线程内的屏幕无效?

yor*_*rkw 5

Android SDK 有一个用于此目的的内置 API - View.postInvalidate()

公共无效postInvalidate()

导致事件循环的后续循环发生无效。使用它可以使非 UI 线程中的视图无效。

仅当此 View 附加到窗口时,才能从 UI 线程外部调用此方法。

也可以看看

 invalidate()  
 postInvalidateDelayed(long)
Run Code Online (Sandbox Code Playgroud)