Handler、Runnable、Threads有什么区别?
当我使用 android 时,我需要在后台运行一些东西。我使用线程来运行它。通常我会写一个扩展 Thread 的类并实现 run 方法。
我还看到了一些实现 runnable 并将 runnable 传递给 Threads 的示例。
但是我仍然很困惑。谁能给我一个明确的解释?
- 如果可以在 Thread 的 run 方法中编写后台代码,那么 Runnable 的意义何在?
- Handler在线程内部是如何使用的,为什么要使用它。
- Android 还有一个东西叫runOnUiThread,我们怎么用呢?我知道它是用来更新 UI 的。
最佳答案
为什么使用 Runnable over Thread?
Runnable
将需要异步运行的代码与 如何 运行代码分开。这使您的代码保持灵活。例如,runnable 中的异步代码可以在线程池或专用线程上运行。一个
Thread
有你的可运行可能不需要访问的状态。获得比必要更多的状态是糟糕的设计。线程占用大量内存。为每个小 Action 创建一个新线程需要处理时间来分配和释放此内存。
runOnUiThread 实际上在做什么?
Android 的 runOnUiThread排队
Runnable
以在 UI 线程上执行。这很重要,因为您永远不应该从多个线程更新 UI。runOnUiThread
使用Handler
。请注意,如果 UI 线程的队列已满,或者需要执行的项目很长,那么您的排队
Runnable
可能需要一段时间才能真正运行。
什么是处理程序?
- 处理程序允许您发布可在特定线程上执行的可运行文件。在幕后,runOnUi Thread 将您的
Runnable
与 Android 的 Ui 处理程序一起排队,以便您的 runnable 可以在 UI 线程上安全地执行。
关于java - Handler、Runnable 和 Threads 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21194762/