因此,下面是我的场景:我有两个活动和一个服务->所有三个(类)都需要来自另一个服务的返回类型值(所以在应用程序中总共有2个活动,2个服务)。
活动A,开始->活动B和服务I。
活动B,开始->服务II。
此后,活动A、B和服务II必须与服务I通信。服务I总是运行在后面,一旦启动就永远不会停止。
我这样做的方法如下:
classes.
现在,我的问题是在步骤5中,onBind()方法无法执行检查每个意图的getType()并给出相应的返回类型的操作。以下是服务i中onBinder()方法的代码:
@Override
public IBinder onBind(final Intent intent){
Log.d(Main_Service.TAG,"it got connected");
if(intent.getType=="Activity_A")
{
return new Activity_A_aidl.Stub() {
public void function1(int u1,String p1,String p2) throws RemoteException{
//do something
}
};}
if(intent.getType=="Activity_B"){
return new Activity_B_aidl.Stub() {
public int function2() throws RemoteException{//do something
return some_integer_values;
}
};}
if(intent.getType()="Service_II"){
return new Service_II_aidl.Stub(){
public boolean function3(String u,String p) throws RemoteException{
//do something
return boolean_type_variable;
}
};}
}
错误:如LogCat: java.lang.NullPointerException中所示
从所有的3个类(活动A,B& Service )中,无论什么地方,我都在试图-捕捉块中调用其中一个函数。
有人能告诉我我哪里出问题了吗。
-Kishore Debnath,(3年级,CSE学生)。
发布于 2011-03-27 12:09:58
在不评论您的总体设计的情况下,我要补充的是,服务区分调用者的方法是使用“action”属性。我不知道initService()是什么,但是当我绑定到远程服务时,我只使用bindService()。所以在你的活动中有这样的东西:
bindService(new Intent("com.mypackage.myService.ACTION_1"), this,
Context.BIND_AUTO_CREATE);
或.ACTION_2或.ACTION_3。
那么在您的服务清单中有一个意图筛选器:
<intent-filter>
<action android:name="com.mypackage.myService.ACTION_1" />
<action android:name="com.mypackage.myService.ACTION_2" />
<action android:name="com.mypackage.myService.ACTION_3" />
</intent-filter>
然后在服务的onBind()中,使用返回一个字符串,标识调用者。(使用正确的.equals()方法来匹配字符串!)并返回适当的IBinder
我不认为临时演员的意图会被传递到服务部门。我从来没有义务从另一个服务服务,但我认为它可能有用。
最后一点,我只使用AIDL和远程服务,因为出于商业原因,我需要将功能划分为两个单独的.apks。我没有好的技术理由去使用它,事实上恰恰相反。
发布于 2011-03-27 09:49:46
,有人能告诉我哪里出了问题吗
你问过..。
Intent
的type
属性,只对MIME类型使用。对于希望附加到Intent
.=
相比较的其他数据,请额外使用Intent
,因为您在上面的第三条if()
语句中。=
I,或者在对getType()
的调用中缺少()
,就像在前两个if()
语句中一样。如果它不编译,它不是一个很好的示例来展示您对情况的理解。您的实际问题很可能来自这里没有显示的代码。您可能正在尝试在连接绑定之前(例如,在调用Binder
之前)对您的onServiceConnected()
对象调用方法。或者,您可能只是在您的Binder
方法的实现中有bug,而这里也没有显示这些bug。
https://stackoverflow.com/questions/5450358
复制