Android 不带绑定地从活动调用服务方法

Android 不带绑定地从活动调用服务方法,android,aidl,Android,Aidl,我为我的应用程序运行了一个推送服务,负责保持TCP连接处于活动状态,并对传入消息创建通知 即使活动已关闭,我也需要运行此服务,因此在线发布的解决方案是调用startService(),而不是bind(),这确实解决了服务在活动被破坏时结束的问题 但是,如果没有绑定器,我如何调用我的服务方法?我工作的一种方式是通过BroadcastReceiver。有没有更简单的方法来实现这种行为?添加一个用于调用startService的操作,每个不同的方法/情况对应一个操作,并在调用onStartComman

我为我的应用程序运行了一个推送服务,负责保持TCP连接处于活动状态,并对传入消息创建通知

即使活动已关闭,我也需要运行此服务,因此在线发布的解决方案是调用
startService()
,而不是
bind()
,这确实解决了服务在活动被破坏时结束的问题


但是,如果没有绑定器,我如何调用我的服务方法?我工作的一种方式是通过
BroadcastReceiver
。有没有更简单的方法来实现这种行为?

添加一个用于调用
startService
的操作,每个不同的方法/情况对应一个操作,并在调用
onStartCommand
时使用
intent.getAction()
检索该操作

根据

对该方法的每次调用都将导致对 目标服务的onStartCommand(Intent,int,int)方法 这里给出了意图。这提供了一种将作业提交给 服务,而无需绑定和调用其接口


服务一直在那里(理论上),一旦应用程序启动,服务将保持运行。那么,这不是只有在我启动服务的情况下才有效吗?它根据意图执行任务。getAction()然后它完成,然后它再次启动执行另一个任务,等等?我不知道你的意思。第一次调用startService时,它将被实例化。如果该服务已经在运行,那么它就不再实例化了,好吧,现在它有了完美的意义,我认为onStart只调用了一次,再次调用startService将停止并重新启动该服务。非常感谢。是的,这就是我的意思,对不起,我只是想确定一下,您可以选择使用LocalBroadcastManager()或使用强大的事件总线,如otto()或greenrobot()