0

使用广播接收器或处理程序从服务我知道服务是在主线程上运行,所以为什么我们使用的广播接收器或处理程序更新的Android UI。我们可以直接更新UI,而无需在android中使用处理程序或广播接收器。我很困惑,请澄清一下这个讨论。UI更新而不在android系统

回答

0

更新UI,你需要有对视图的参考。您无法获得对服务中视图的引用。但是你可以做到这一点。这就是为什么你必须在服务中执行Activity来更新UI之前(因为服务本身没有UI)。

您可以将对用户界面的引用传递到服务中,但由于活动和服务生命周期可能会不同,并且可能导致内存泄漏,并且最终可能会导致服务锁定活动的死锁被GCed,并且活动锁定服务。

+0

regullar services是什么意思?任何服务的例子都在主线程上运行? –

+0

@chetanmekha,任何不是特别的服务。任何示例,从“服务”扩展。 –

2

答:创建活动,注册您的广播接收器等瞧!

详情: 在你一个问题,你是指服务和处理程序,它可以在另一个线程启动。 - >处理程序用于进程间通信,当在UI线程之外运行的服务应该与UI线程交谈时。 - >服务是为长期处理案例而设计的。

在你一个问题,你是指广播接收机,它可以从服务中启动,或从活动。 - >如果您想用某些系统(和其他自定义)事件更新UI,您将始终需要广播接收器。 - >如果它只是捕获事件并更新一个字段,这不是一个漫长的过程。但是,如果是关于捕获和读取数据库,或访问Web服务(非常异步操作),这是一个漫长的过程。