我有两个问题:
任何建议都将不胜感激。
此致
ARTIK
答案 0 :(得分:9)
这非常重要,因为服务必须在事件发生后立即向活动发送一些信息(从网上获取数据)。
您可以使用AIDL进行双向通信。您不仅需要通过AIDL公开服务接口,还需要通过具有回调.Stub
的客户端公开回调接口,并在参数中将其实例提供给服务接口上的方法。这有点复杂 - 这里有一对来自my book的示例应用程序演示了这种技术:
是否可以从远程服务再次关闭应用程序(活动)?
您的服务可以致电startActivity()
,但通常这是一个坏主意。用户可能正在做其他事情,当你的活动突然出现在前台时。有时,用户可能认为您的活动更重要,但并非总是如此。请考虑使用Notification
,让用户知道您的应用中有某些内容需要用户注意。
答案 1 :(得分:1)
首先,在您的服务中创建一个私有的resultreceiver变量。然后创建一个方法,通过连接的活动设置此resultreceiver。然后使用AIDL通过您刚刚创建的方法将resultreceiver传递给活动中正在运行的服务。然后在服务中使用resultreceiver.send,如果resultreceiver不为null。
一些让你入门的例子 http://lalit3686.blogspot.com/2012/06/how-to-update-activity-from-service.html?m=1
http://chrisrisner.com/31-Days-of-Android--Day-28 - 意图-部分-3 - 服务的意图