我正在使用服务和远程接口开发应用程序。
我有一个关于在整个活动中传递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是我的界面的引用。 现在我想从另一个活动访问这个界面,我看到两种方法可以做到,但我不知道哪一个是“正确”的方式:
this.bindService(new Intent(y.this,z.class), mConnection, Context.BIND_AUTO_CREATE);
你建议我做什么?
答案 0 :(得分:1)
我正在使用开发应用程序 服务和远程接口。
你确定有必要吗?如果活动和服务在同一个应用程序中,请不要使用AIDL来访问它们,因为这会增加无价值的开销。即使您还支持AIDL以连接第三方应用程序,也请使用本地绑定模式。
当我打电话时,以我的意图传递x 新的活动
我怀疑这是可能的还是安全的。
重做this.bindService(新的 意图(y.this,z.class),mConnection, Context.BIND_AUTO_CREATE);在里面 onCreate()我的新活动
我怀疑这是你唯一的选择。对于本地服务,这样的绑定操作相当便宜。这就是为什么我鼓励您在应用程序中使用本地绑定模式,而不是AIDL。