需要有关活动和服务行为的建议

时间:2013-07-16 17:30:45

标签: android service android-activity

我的问题是理论上的,事实上我已经看到了如何绑定或如何使用服务启动Activity的示例,但我仍然没有得到一件事: 我写了一个与活动有界的服务,我想知道如何从这个服务中获取调用bindService()方法的活动。

我的目的是获得一个对服务必需的对象,因为我希望它在后台监听网络消息,因为这个对象非常复杂,我宁愿得到包含它的活动。
是否可以调用当前上下文?

感谢您的回答。

1 个答案:

答案 0 :(得分:1)

如果您的服务仅在您的应用程序中使用,并且一次只能使用一个进程,则可以尝试使用绑定服务。在用于活动和服务之间通信的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;
    }
}

希望这适合你。