Android:从我正在运行的服务中获取变量

时间:2012-03-31 05:38:45

标签: android android-intent android-service

我的活动启动了一项服务,当我关闭我的应用程序时,该服务继续运行。 好的,没错。但是当我再次打开我的应用程序时,在活动中,我需要知道在我之前开始运行的Service(类)上定义的公共变量的值。

我该怎么做?

由于

3 个答案:

答案 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类的所有公共成员。

要创建连接,请在您的活动中实施doBindServicedoUnbindService

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交给另一个进程。