为什么android UI在主线程上运行而不在其他线程上运行? 为什么它只专用于UI?
(有些人会说它的运行服务,但我不买。 如果发生这种情况,服务将在应用程序退出时结束,因为主线程会被进程终止。据我说,它运行在操作系统空间(如Windows服务,我猜))
为什么我也无法从其他线程更改UI? (不在UI线程上发布工作) 是硬件约束还是什么?为什么这样设计?
答案 0 :(得分:4)
为什么我也无法从其他线程更改UI?
Android是围绕2005-2007的移动CPU设计的,大约是当今CPU的2%。尝试允许多个线程操纵UI的同步开销被认为太高了。在这些情况下,他们使用了一种通用方法:指定一个特殊线程作为UI更新的线程,以及在其他线程上尝试的更新失败。
有人会说它的运行服务
通常,对象不在线程上运行 - 方法在线程上运行。
在主应用程序线程上调用所有Android组件的生命周期方法。因此,对于Service
,onCreate()
,onStartCommand()
,onBind()
和onDestroy()
会在主应用程序主题上调用。
如果发生这种情况,服务将在应用程序退出时结束
Android中的应用程序不会退出"。
因为主线程被进程杀死
当进程终止时,其中的所有组件也会被杀死#34;因此该进程中的服务将会消失。