0

我正在使用服务和远程接口开发应用程序。

我有一个关于在整个活动中传递我的远程接口的引用的问题。

在我的第一个活动中,我将我的服务与我的活动绑定,以便获得对我使用的界面的引用

private ServiceConnection mConnection = new ServiceConnection() {

        @Override
        public void onServiceConnected(ComponentName arg0, IBinder service) {
            x = X.Stub.asInterface(service);

        }

        @Override
        public void onServiceDisconnected(ComponentName arg0) {
            // TODO Auto-generated method stub

        }

    };

x 是对我的界面的引用。现在我想从另一个活动中访问这个界面,我看到了两种方法,但我不知道哪一种是“正确”的方法:

  • 当我调用新 Activity 时以我的意图传递 x
  • this.bindService(new Intent(y.this,z.class), mConnection, Context.BIND_AUTO_CREATE);在我的新活动的 onCreate() 中重做

你会建议我做什么?

4

1 回答 1

1

我正在使用服务和远程接口开发应用程序。

你确定有必要吗?如果活动和服务在同一个应用程序中,请不要使用 AIDL 访问它们,因为这会增加开销而没有任何价值。请改用本地绑定模式,即使您还支持 AIDL 以供第三方应用程序连接。

当我调用新 Activity 时以我的意图传递 x

我怀疑这是可能的或安全的。

重做 this.bindService(new Intent(y.this,z.class), mConnection, Context.BIND_AUTO_CREATE); 在我的新活动的 onCreate()

我怀疑这是你唯一的选择。对于本地服务,像这样的绑定操作相当便宜。这就是为什么我鼓励您在应用程序中对服务使用本地绑定模式,而不是 AIDL。

于 2010-05-13T10:46:42.200 回答