如何在整个活动中传递远程接口(aidl)?

时间:2010-05-13 09:43:35

标签: android service android-activity android-intent aidl

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

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

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

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是我的界面的引用。 现在我想从另一个活动访问这个界面,我看到两种方法可以做到,但我不知道哪一个是“正确”的方式:

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

你建议我做什么?

1 个答案:

答案 0 :(得分:1)

  

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

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

  当我打电话时,

以我的意图传递x   新的活动

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

  

重做this.bindService(新的   意图(y.this,z.class),mConnection,   Context.BIND_AUTO_CREATE);在里面   onCreate()我的新活动

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