Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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_Ipc_Instrumentation - Fatal编程技术网

Android 使用信使进行仪器测试

Android 使用信使进行仪器测试,android,ipc,instrumentation,Android,Ipc,Instrumentation,我有一个使用UPnP服务器的应用程序。对于插装测试,我想模拟它,即创建自己的UPnP服务器,该服务器将由测试插装。不幸的是,UPnP服务器似乎无法在测试包中与作为UPnP客户端的应用程序的相同进程中运行,因此我决定将此UPnP服务器放在不同的APK中,并使用Android的Messenger功能对其进行控制 我已经为另一个项目设置了这样的IPC,因此我使用了其中的一些代码,并且我能够成功地将消息从测试客户端发送到UPnP服务器。但是,测试无法从服务器接收任何消息。我在消息的replyTo字段中发

我有一个使用UPnP服务器的应用程序。对于插装测试,我想模拟它,即创建自己的UPnP服务器,该服务器将由测试插装。不幸的是,UPnP服务器似乎无法在测试包中与作为UPnP客户端的应用程序的相同进程中运行,因此我决定将此UPnP服务器放在不同的APK中,并使用Android的Messenger功能对其进行控制

我已经为另一个项目设置了这样的IPC,因此我使用了其中的一些代码,并且我能够成功地将消息从测试客户端发送到UPnP服务器。但是,测试无法从服务器接收任何消息。我在消息的replyTo字段中发送客户端的Messenger对象,服务器正在使用此Messenger发回另一条消息-发送似乎成功,但没有任何消息到达客户端。如果客户端在服务器开始发送回复之前断开连接,那么在发送回复期间,我会收到一个异常,即接收方不可用。对我来说,这意味着用于回复的Messenger对象是正确的

有没有人遇到过类似的问题,或者知道这里的问题是什么? 为什么Android IPC不能与instrumentationfunctional test一起工作?Android在测试包下对代码的处理有什么不同吗


我想这无关紧要,但我正在使用Robotium进行测试。

所以问题当然是我的消息处理程序。 它是在测试设置期间创建的,因此它是在检测线程上创建的。测试方法的执行将在此检测线程中再次完成,除非您将其注释为在UI线程上运行。这意味着,当测试方法执行时,消息处理程序无法执行,因此永远不会收到消息

使用循环器在新线程中创建处理程序,修复了我的问题

这段视频非常有助于提供更多关于IPC如何在Android中工作的信息,以及Messenger真正为您做了什么。