我的活动启动了一项服务,当我关闭我的应用程序时,该服务继续运行。 好的,没错。但是当我再次打开我的应用程序时,在活动中,我需要知道在我之前开始运行的Service(类)上定义的公共变量的值。
我该怎么做?
由于
答案 0 :(得分:2)
如果您将活动绑定到服务,则应在Binder
中实施Service
接口,例如
public class ServiceBinder extends Binder {
public MyService getService() {
return MyService.this;
}
}
在您的活动中,创建一个新的ServiceConnection
课程,该课程将用于授予您访问服务的权限:
private ServiceConnection mConnection = new ServiceConnection() {
public void onServiceConnected(ComponentName className, IBinder service) {
mMyService = ((MyService.ServiceBinder)service).getService();
}
public void onServiceDisconnected(ComponentName className) {
mMyService = null;
}
};
此处,成员变量mMyService
将允许您访问Service类的所有公共成员。
要创建连接,请在您的活动中实施doBindService
和doUnbindService
:
void doBindService() {
bindService(new Intent(this, MyService.class), mConnection, Context.BIND_AUTO_CREATE);
}
void doUnbindService() {
// Detach our existing connection.
unbindService(mConnection);
}
希望这有帮助!
答案 1 :(得分:1)
如果您不调用unbindService,您的活动仍然与服务有关,您只需通过服务的方法检查变量即可。
答案 2 :(得分:1)
您可以使用messenger。 根据android网站
Messenger是对Handler的引用,其他人可以使用它来向其发送消息。这允许跨进程实现基于消息的通信,方法是在一个进程中创建指向处理程序的Messenger,并将该Messenger交给另一个进程。