当前位置: 首页>后端>正文

面向Android 开发者的Flutter之Flutter 中的 runOnUiThread() 相当于什么?

Dart 具有单线程执行模型,支持Isolates(一种在另一个线程上运行 Dart 代码的方法)、事件循环和异步编程。除非您生成Isolate,否则您的 Dart 代码将在主 UI 线程中运行并由事件循环驱动。Flutter 的事件循环相当于 Android 的 main?Looper,即Looper附加到主线程的事件循环。

Dart 的单线程模型并不意味着您需要将所有内容作为导致 UI 冻结的阻塞操作来运行。与 Android 要求你始终保持主线程空闲不同,在 Flutter 中,使用 Dart 语言提供的异步设施,例如?async/?await,来执行异步工作。如果您在 C#、Javascript 中使用过async/范例,或者您使用过 Kotlin 的协程,您可能会熟悉它。await

async例如,您可以通过使用/await并让 Dart 完成繁重的工作来运行网络代码而不会导致 UI 挂起

面向Android 开发者的Flutter之Flutter 中的 runOnUiThread() 相当于什么?,第1张

在 Android 上,当您扩展 时AsyncTask,通常会重写 3 个方法?onPreExecute(),doInBackground()和onPostExecute()。在 Flutter 中没有等价物,因为你await在一个长时间运行的函数上,Dart 的事件循环会处理剩下的事情。

但是,有时您可能正在处理大量数据并且您的 UI 挂起。在 Flutter 中,使用Isolates 可以利用多个 CPU 内核来执行长时间运行或计算密集型任务。

Isolates 是独立的执行线程,不与主执行内存堆共享任何内存。这意味着您无法从主线程访问变量,或通过调用setState().?与 Android 线程不同,Isolates 名副其实,不能共享内存(例如,以静态字段的形式)。

面向Android 开发者的Flutter之Flutter 中的 runOnUiThread() 相当于什么?,第2张
面向Android 开发者的Flutter之Flutter 中的 runOnUiThread() 相当于什么?,第3张

https://www.xamrdz.com/backend/3ua1924815.html

相关文章: