如果我的 Android Things 应用程序没有 UI,我是否需要使用后台线程?
If my Android Things app has no UI, do I need to use background threads?
我正在使用 Android Things 编写应用程序,大多数 samples 不使用任何 UI 即使他们使用 Activities。我的 Android Things 应用还需要使用后台线程吗?
从技术上讲,您的 Android Things 应用确实有 UI。您可以使用普通 Android 应用程序(例如 setContentView()
、使用 View
s 和 ViewGroup
s,等等)您也可以在 Android Things 应用程序,如果你使用连接到显示器的板,你可以在显示器上看到这个 UI。事实上,如果显示器支持触摸 this one,您甚至可以像普通 Android 应用程序一样与 UI 交互。
无论您是否使用任何标准 UI 工具包,您的应用程序都与其他任何应用程序一样,仍然必须遵守 Android 的线程策略,例如您不能在主线程上执行网络操作。与任何其他应用程序一样,操作系统仍然会监控您应用程序的主线程的响应能力,因此如果与外围设备的交互可以执行长 运行 或阻塞操作,您应该使用后台线程来防止系统认为您的应用程序是没有响应。
Android Things使用Android Activity的输入事件系统来接收来自硬件外设的输入。即,当在您的面包板上按下按钮时,Activity 将其作为关键事件接收。
如果您不使用后台线程,您的应用程序可能会太忙 运行 您的代码无法解释 and/or 接收这些输入事件。
因此,这就是操作系统仍将执行标准线程策略以及您应该使用后台线程的原因。
来自文档 https://developer.android.com/things/sdk/index.html:
However, Android Things does not require a display. On devices where a graphical display is not present, activities are still a primary component of your Android Things app. This is because the framework delivers all input events to the foreground activity, which has focus. Your app cannot receive key events or motion events through any other application component, such as a service.
我正在使用 Android Things 编写应用程序,大多数 samples 不使用任何 UI 即使他们使用 Activities。我的 Android Things 应用还需要使用后台线程吗?
从技术上讲,您的 Android Things 应用确实有 UI。您可以使用普通 Android 应用程序(例如 setContentView()
、使用 View
s 和 ViewGroup
s,等等)您也可以在 Android Things 应用程序,如果你使用连接到显示器的板,你可以在显示器上看到这个 UI。事实上,如果显示器支持触摸 this one,您甚至可以像普通 Android 应用程序一样与 UI 交互。
无论您是否使用任何标准 UI 工具包,您的应用程序都与其他任何应用程序一样,仍然必须遵守 Android 的线程策略,例如您不能在主线程上执行网络操作。与任何其他应用程序一样,操作系统仍然会监控您应用程序的主线程的响应能力,因此如果与外围设备的交互可以执行长 运行 或阻塞操作,您应该使用后台线程来防止系统认为您的应用程序是没有响应。
Android Things使用Android Activity的输入事件系统来接收来自硬件外设的输入。即,当在您的面包板上按下按钮时,Activity 将其作为关键事件接收。
如果您不使用后台线程,您的应用程序可能会太忙 运行 您的代码无法解释 and/or 接收这些输入事件。
因此,这就是操作系统仍将执行标准线程策略以及您应该使用后台线程的原因。
来自文档 https://developer.android.com/things/sdk/index.html:
However, Android Things does not require a display. On devices where a graphical display is not present, activities are still a primary component of your Android Things app. This is because the framework delivers all input events to the foreground activity, which has focus. Your app cannot receive key events or motion events through any other application component, such as a service.