Итак, вот мой сценарий:
У меня есть два действия и один сервис -> всем трем (классам) требуется значение типа возврата из другого сервиса (итого 2 действия, 2 сервиса в приложении).
т.е:
Действие A, запускается -> Действие B и Услуга I.
Деятельность B, запускается -> Служба II.
После этого Деятельность A, B и Служба II должны связываться со Службой I.
Служба I всегда работает позади и никогда не останавливается после запуска.
Мой подход был следующим:
Напишите три файла .aidl, которые объявляют интерфейс между четырьмя взаимодействующими классами.
Создайте операцию A, затем создайте службу I, операцию B, а из операции B создайте службу II.
В качестве службы у меня может быть только один метод onBind () для связи с 3-мя классами в любое время, и я делаю то, что все намерения из 3-х классов различаются путем присвоения различного значения с помощью setType () свойство.
Соединение создается между каждыми двумя классами, когда связь должна осуществляться с помощью initService () и вскоре после этого освобождается с помощью releaseService ().
В Сервисе I метод onBind () должен сначала проверить, из какого из 3 классов идет намерение, используя свойство getType (), и вернуть соответствующий тип IBinder.
Теперь,
Моя проблема на шаге 5. В котором метод onBind () не может выполнить операцию проверки getType () всех намерений и дать соответствующий тип возврата.
Вот мой код для метода onBinder () в Сервисе I:
@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 II), где бы я ни вызывал одну из функций в блоке try-catch.
Может кто-нибудь сказать мне, где я иду не так.
-Кишор Дебнат, (3-й год, студент CSE).