所以,这是我的场景:我有两个活动和一个服务——>所有三个(类)都需要另一个服务的返回类型值(所以总共有 2 个活动,应用程序中有 2 个服务)。
即:活动A,开始-> 活动B和服务I。
活动 B,启动 --> 服务 II。
此后,活动 A、B 和服务 II 必须与服务 I 通信。服务 I 总是在后面运行,并且一旦启动就永远不会停止。
我这样做的方法如下:
编写三个 .aidl 文件来声明四个通信类之间的接口。
创建活动A,然后创建服务I,活动B;并从活动B创建服务II。
作为服务,我只能有一个 onBind() 方法,用于随时与 3 个类进行通信,我正在做的是通过使用 setType() 属性分配不同的值来区分 3 个类的所有意图。
当必须使用 initService() 完成通信并在使用 releaseService() 之后很快释放时,每两个类之间都会建立连接。
在 Service I 中,onBind() 方法必须首先使用 getType() 属性检查意图来自 3 个类中的哪一个,并返回相应的 IBinder 类型。
现在,我的问题出现在第 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 和服务 II)中,无论我在哪里调用 try-catch 块中的一个函数。
谁能告诉我我哪里出错了。
-Kishore Debnath,(3 年级,CSE 学生)。