【发布时间】:2010-07-16 01:42:20
【问题描述】:
Android 文档说“与活动和其他组件一样,服务在应用程序进程的主线程中运行。”
这里的主线程和UI线程一样吗?
【问题讨论】:
-
与接受的答案(和引用的文档)中的陈述相反,在某些情况下,主线程和 UI 线程可能不同。完整答案在这里:stackoverflow.com/a/40795895/2463035
标签: android
Android 文档说“与活动和其他组件一样,服务在应用程序进程的主线程中运行。”
这里的主线程和UI线程一样吗?
【问题讨论】:
标签: android
看起来像。引用自http://android-developers.blogspot.com/2009/05/painless-threading.html:“应用启动时,系统会为应用创建一个名为“main”的线程。主线程,也叫UI线程……”,官方API文档。
【讨论】:
UI 线程 和 主线程 仅在 Android 中相同。
主线程,负责处理UI 事件,如Draw、Listen 和接收UI 事件。
Ans 还负责与运行的 UI 工具包 的组件 进行交互,以用于所属的相应应用程序。
当应用程序中发生用户事件时,主线程 *
需要在队列中添加事件-> 贴心的关于事件到 合适的视图 -> 改变视图的状态 -> 重绘视图 根据状态变化 -> 等待响应 特定事件动作 -> 在提示和事件动作完成后 需要删除队列中的事件。
*
上面的每一个动作都由主线程处理(不仅仅是上面的操作,它是UI线程处理的操作之一),所以如果我们的应用程序无法响应大约 5 秒 的事件 android 将显示错误 “未响应”。
因此,只有广泛建议在 UI 线程 中执行轻量级进程。
希望这个答案有点详细,对像我这样的新安卓蜜蜂有所帮助。 我刚刚分享了我对 UI Thread 的了解。如果我在任何地方出错了,请随时纠正我。
【讨论】:
基本上主线程是 Ui 线程。
但是有时它们可能是不同的胎面!
系统应用程序可以在不同线程上具有多个视图。
此外,如果您使用支持注释,请注意 @MainThread 和 @UiThread 同时可用。
在这里,您使用第一个注释与应用生命周期相关的方法,并使用负责视图层次结构的第二个方法。
https://developer.android.com/studio/write/annotations.html
【讨论】:
“主应用程序线程”有时也称为“UI 线程”。
【讨论】:
Service(onCreate()、onStartCommand()、onBind()、onDestroy())的生命周期方法在主应用程序线程上被调用,并且在主应用程序线程上从这些方法完成的任何工作都将阻止 UI更新。服务通常为长时间运行的任务派生线程。有些类,比如IntentService,为你提供了这样的线程;否则,你自己的 fork。
每个 Activity 都有自己的 UI 线程。 VM 启动后,Zygote 就会启动 System Server。 Activity Manager Service 等所有其他服务均由 System Server 在新线程中启动。
【讨论】:
是的。主线程是 UI 线程。
请参阅this tutorial 了解有关 android 后台处理的完整详细信息
【讨论】: