1. 为什么可运行?
Runnable只是一个接口,你需要实例化一个线程来包含它。而线程已经包含生成线程的能力。如果扩展 Thread,则无法扩展其他任何内容(Java 不支持多重继承)。一个类上可以有多个接口,因此可以运行。
此外,在扩展 Thread 类时,每个线程都会创建唯一的对象并与其关联。实现 Runnable 时,它会将同一对象共享给多个线程。
2. 为什么要使用处理程序,它是什么?
处理程序是用Java编写的(内部使用线程),所以你可以用处理程序做的所有事情,你也可以使用线程来实现。
那么为什么要使用Handler呢?原因如下
为了按照上述2条规则进行绑定,在android中,我们有3个内置方法,可以处理其中一个活动类在另一个线程上运行或从另一个线程调用的情况。
然后,我们可以使用以下三种方法将 UI 更新安排在 UI 线程上运行。然后,活动或视图充当处理程序(下面将详细介绍处理程序),并将可运行的时间安排到 UI 线程:
- Activity.runOnUiThread(Runnable)
- View.post(可运行)
- View.postDelayed(Runnable, long) //(long = time to schedule)
3. 什么是 UI 线程?
UI 线程是在其中呈现 UI 元素(如视图和活动)的主线程。不应在 UI 线程中发生任何耗时的操作。应用程序默认值在 UI 线程中运行。您无需执行任何特殊操作即可使用 UI 线程。