我的问题是相当理论上的,实际上我已经看到了有关如何绑定或如何使用服务启动 Activity 的示例,但我仍然没有得到一件事:我编写了一个绑定到活动的服务,我想知道如何从该服务中获取调用 bindService() 方法的活动。
我的目的是获取服务所必需的对象,因为我希望它在后台侦听网络消息,因为这个对象非常复杂,我宁愿获取包含它的活动。
是否可以调用当前上下文?
感谢您的回答。
我的问题是相当理论上的,实际上我已经看到了有关如何绑定或如何使用服务启动 Activity 的示例,但我仍然没有得到一件事:我编写了一个绑定到活动的服务,我想知道如何从该服务中获取调用 bindService() 方法的活动。
我的目的是获取服务所必需的对象,因为我希望它在后台侦听网络消息,因为这个对象非常复杂,我宁愿获取包含它的活动。
是否可以调用当前上下文?
感谢您的回答。
如果您的服务仅在您的应用程序中使用并且一次仅由一个进程使用,您可以尝试使用绑定服务。在IBinder
用于活动和服务之间通信的接口中,实现了一个返回本地服务的公共方法。这将通过回调传递IBinder
给活动。onServiceConnected()
此时活动可以获取Service
对象并在其上调用公共方法以传递您想要的对象。
public class MyService extends Service {
private final IBinder mBinder = new MyBinder(); //singleton
private MyObject mObject;
public class MyBinder extends Binder {
MyService getService() {
return this;
}
}
@Override
public IBinder onBind(Intent intent) {
return mBinder;
}
public void setMyObject(MyObject mObject) {
this.mObject = mObject;
}
}
希望这对你有用。