为什么android UI在主线程上运行?

时间:2014-05-08 12:55:13

标签: android android-service

为什么android UI在主线程上运行而不在其他线程上运行? 为什么它只专用于UI?

(有些人会说它的运行服务,但我不买。 如果发生这种情况,服务将在应用程序退出时结束,因为主线程会被进程终止。据我说,它运行在操作系统空间(如Windows服务,我猜))

为什么我也无法从其他线程更改UI? (不在UI线程上发布工作) 是硬件约束还是什么?为什么这样设计?

1 个答案:

答案 0 :(得分:4)

  

为什么我也无法从其他线程更改UI?

Android是围绕2005-2007的移动CPU设计的,大约是当今CPU的2%。尝试允许多个线程操纵UI的同步开销被认为太高了。在这些情况下,他们使用了一种通用方法:指定一个特殊线程作为UI更新的线程,以及在其他线程上尝试的更新失败。

  

有人会说它的运行服务

通常,对象不在线程上运行 - 方法在线程上运行。

在主应用程序线程上调用所有Android组件的生命周期方法。因此,对于ServiceonCreate()onStartCommand()onBind()onDestroy()会在主应用程序主题上调用。

  

如果发生这种情况,服务将在应用程序退出时结束

Android中的应用程序不会退出"。

  

因为主线程被进程杀死

当进程终止时,其中的所有组件也会被杀死#34;因此该进程中的服务将会消失。