2014-05-08 143 views
-3

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

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

为什么不能改变其他线程的用户界面? (不在UI线程上发布工作) 它是硬件约束还是什么?为什么这样设计?

回答

4

为什么不能从其他线程更改UI?

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

有人会说,它的运行服务以及

一般情况下,对象不上线运行 - 方法的线程上运行。

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

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

应用在Android中没有“退出”将结束。

因为主线程获取与处理

进程终止时被杀,在它的所有部件也是“被杀”,因此这是这一过程中的服务会自动消失。

+0

从谷歌文档。 已启动 当应用程序组件(如活动)通过调用startService()启动服务时,服务将“启动”。一旦开始,服务可以无限期地在后台运行,即使启动它的组件被销毁。通常,启动的服务执行单个操作,并且不会将结果返回给调用者。例如,它可能通过网络下载或上传文件。操作完成后,服务应该自行停止。 当他们说“即使启动它的组件被破坏”时,它们是指应用程序吗? – Nishant

+0

@Nishant:不,由“组件”表示“组件”。通常,启动服务的组件是一个活动或一个'BroadcastReceiver',尽管在某些情况下服务启动另一个服务。 – CommonsWare

相关问题