如何让Android服务与活动进行通信我正在编写我的第一个Android应用程序,并试图在服务和活动之间进行沟通。我有一个服务,将运行在后台,并做一些GPS和基于时间的日志记录。我将有一个活动,将用于启动和停止服务。因此,首先,我需要能够确定服务在活动启动时是否正在运行。这里还有一些其他的问题,所以我想我可以弄清楚(但请随时提供建议)。我真正的问题是:如果活动正在运行,并且服务已经启动,我需要一种让服务向活动发送消息的方法。这一点上的简单字符串和整数-状态消息主要是。消息不会定期发生,所以我不认为轮询服务是一个很好的方式,如果有其他方式。我只希望在用户启动该活动时进行此通信-我不希望从服务中启动该活动。换句话说,如果您启动了该活动,并且服务正在运行,那么当发生一些有趣的事情时,您将在ActivityUI中看到一些状态消息。如果您不启动该活动,您将不会看到这些消息(它们没有那么有趣)。似乎我应该能够确定服务是否正在运行,如果是的话,将活动添加为侦听器。然后,在活动暂停或停止时,以侦听器的身份删除该活动。这真的有可能吗?我能找到的唯一方法是让活动实现Parcelable并构建一个AIDL文件,这样我就可以通过服务的远程接口传递它。不过,这似乎有点过火了,我不知道该活动应该如何实现writeToPackcel()/readFromPackcel()。有没有更简单或更好的方法?谢谢你的帮助。编辑:对于以后对此感兴趣的人,有来自Google的示例代码,用于通过示例目录/apis/app/RemoteService.java中的AIDL处理这个问题。
3 回答
暮色呼如
TA贡献1853条经验 获得超9个赞
使用意图 使用AIDL 使用服务对象本身(作为单例)
void onCreate(Intent i) { sInstance = this;}
MyService getInstance()
sInstance
.
Activity.onCreate()
Activity.runOnUiThread()
.
Activity.onPause()
添加回答
举报
0/150
提交
取消