Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.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
Android 使用本地绑定器在活动和(绑定的)服务处理程序之间进行通信_Android_Asynchronous_Android Service_Android Handler_Messenger - Fatal编程技术网

Android 使用本地绑定器在活动和(绑定的)服务处理程序之间进行通信

Android 使用本地绑定器在活动和(绑定的)服务处理程序之间进行通信,android,asynchronous,android-service,android-handler,messenger,Android,Asynchronous,Android Service,Android Handler,Messenger,不知何故,我觉得这令人困惑: 如果您的活动和绑定服务在同一进程中运行,并且您希望在活动和绑定服务之间异步通信(使用通知将其设置为前台),那么如何在两侧使用处理程序?我不明白的是,活动端和服务端都在同一个线程中运行:UI线程。这意味着同一个处理程序 我以前是这样编程的:在绑定服务中,我创建一个处理程序,将该处理程序放入Messenger,然后在onBind()方法中返回Messenger。在活动端,我使用OnServiceConnection()和onServiceDisconnected()创建

不知何故,我觉得这令人困惑:

如果您的活动和绑定服务在同一进程中运行,并且您希望在活动和绑定服务之间异步通信(使用通知将其设置为前台),那么如何在两侧使用处理程序?我不明白的是,活动端和服务端都在同一个线程中运行:UI线程。这意味着同一个处理程序

我以前是这样编程的:在绑定服务中,我创建一个处理程序,将该处理程序放入Messenger,然后在onBind()方法中返回Messenger。在活动端,我使用OnServiceConnection()和onServiceDisconnected()创建一个ServiceConnection对象。我还创建了一个客户机处理程序,并将其放入客户机Messenger对象中。我还定义了一个service Messenger对象,该对象在ServiceConnection对象的onServiceConnection()方法中分发其Messenger对象。一切都准备好了

我相信我可以删除活动和服务之间的整个Messenger部分,并且只使用本地绑定器对象(因为活动和服务在同一ui线程上运行)。这样,两边只有一个线程,两个处理程序和两个信使。为什么在同一线程中有两个处理程序/信使?这是获得异步通信的唯一方法吗?我不想直接从活动中调用服务中的方法(正如您通常使用本地绑定器对象所做的那样),因为这是同步通信