Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 安卓-有没有一种方法可以在使用服务的消息处理程序时仍然能够调用它';来自绑定活动的方法?_Java_Android - Fatal编程技术网

Java 安卓-有没有一种方法可以在使用服务的消息处理程序时仍然能够调用它';来自绑定活动的方法?

Java 安卓-有没有一种方法可以在使用服务的消息处理程序时仍然能够调用它';来自绑定活动的方法?,java,android,Java,Android,我试图重写一个名为AdamService的现有服务,以便它可以扩展一个名为BaseSensorService的服务类。AdamService的onBind()当前返回一个绑定器,该绑定器具有一个函数getService,该函数公开其方法: private final IBinder local_binder=new LocalBinder(); 公共类LocalBinder扩展了Binder { 公共AdamService getService() { 返回AdamService.this; }

我试图重写一个名为AdamService的现有服务,以便它可以扩展一个名为BaseSensorService的服务类。AdamService的onBind()当前返回一个绑定器,该绑定器具有一个函数getService,该函数公开其方法:

private final IBinder local_binder=new LocalBinder();
公共类LocalBinder扩展了Binder
{
公共AdamService getService()
{
返回AdamService.this;
}
}
@凌驾
公共IBinder onBind(意图){返回本地绑定器;}
但是,BaseSensorService的onBind将绑定器返回给类的消息处理程序:

@覆盖
公共IBinder onBind(意向)
{
isServiceBound=true;
返回mMessageHandler.getBinder();
}

有没有一种方法可以从超类绑定到消息处理程序,并且仍然能够调用AdamService的一些方法?有没有办法将这两种活页夹组合起来?

什么是
mMessageHandler
,它返回的活页夹是什么类型?是否在此同一应用程序中导出了任何
BaseSensorServices
,或仅在本地使用?BaseSensorService的每个实现都存储在不同的应用程序中,每个传感器对应一个。其想法是尝试制作一款可以控制和收集所有传感器数据的应用程序。mMessageHandler是SensorServiceMessageHandler的信使,它扩展了处理程序。我想到的一个解决方案是在AdamService中编写一个getHandlerBinder()函数,然后我可以使用一个本地绑定器在onBind()中,在服务连接的onServiceConnected中,我可以存储对AdamService的引用,然后调用service.getHandlerBinder()并将其中的活页夹用于messenger。然而,如果AdamService在一个应用程序中启动,然后另一个应用程序尝试绑定到它,这会起作用吗?是否有办法检查活页夹是否与当前应用程序来自同一进程?您将无法使用
LocalBinder
样式的解决方案跨2个应用程序进行绑定。您需要进一步考虑您的用例。最好只增强
SensorServiceMessageHandler
,以获得所需的功能。