【发布时间】:2011-03-27 15:59:14
【问题描述】:
所以,这是我的场景: 我有两个活动和一个服务——>所有三个(类)都需要另一个服务的返回类型值(所以总共有 2 个活动,应用程序中有 2 个服务)。
即: Activity A,启动 --> Activity B 和 Service I。
活动 B,启动 --> 服务 II。
此后,活动 A、B 和服务 II 必须与服务 I 通信。 服务 I 总是落后,一旦启动就永远不会停止。
我的做法如下:
编写三个 .aidl 文件,声明四个通信类之间的接口。
创建 Activity A,然后创建 Service I、Activity B;然后从 Activity B 创建 Service II。
作为服务,我只能有一个 onBind() 方法,用于随时与 3 个类进行通信,我正在做的是通过使用 setType() 分配不同的值来区分 3 个类的所有意图财产。
当必须使用 initService() 完成通信并在之后不久使用 releaseService() 释放时,每两个类之间都会建立连接。
在服务 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 学生)。
【问题讨论】:
标签: android service android-activity bind aidl