service与activity交互实践

本文讨论了Android中Service作为后台服务执行持续任务时与Activity之间的交互方式。重点介绍了使用Handler进行跨线程通信的方法,以及如何在ServiceConnection回调中获取Service实例以实现与Activity的有效通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

service可以作为后台的服务,执行持续的任务,比如从后台不断获取数据然后显示到图标上,客户可以在打开图表的时候可以第一时间看到过去一段时间的数据。这里面就是设计到service与activity交互的问题。因为service一直是不被杀死的,但是要想一直执行的话,应该处在一个死循环里面,用于监听数据,如果从服务器获取到数据了,就可以通过handler直接发送到activity里面,由activity里面的handlermessage刷新数据。由于service与activity已经不处在同一个thread里面,所以涉及到跨线程的通信。当然你可以用类似全局变量,或者广播的方式来通信。但是最佳的实践确是handler。现在关键问题是service如何获取到activity的实例。由于有人会说,可以用个静态变量,当做全局变量这么去做,但是这样一是消耗内存,并且也是不安全的。我觉得比较合适的方式是,通过bindservice中间的serviceconnection回调的时候获取到service的实例,有了实例就可以把与service交互了。


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值