内我正在写一个应用程序,基本上是围绕一个250K JNI的包装阻止对话框。 JNI(游戏引擎)具有类似handle_penUp(int x,int y)的API。有时它需要从handle_penUp()内部(通过回调到Java代码)查询用户,因此我用来实现查询的对话框必须被阻止。从JNI代码
据我了解,执行的主线程不能阻止。所以我产生了第二个线程,它使得所有可能导致需要阻塞的回调的JNI调用。在第二个线程中,当我需要建立阻塞对话框时,我调用startActivityForResult(),然后在信号量上获取()。当onActivityResult()在主线程上被调用时,它调用同一信号量上的release()。
如果我的查询将作为一个新的活动来实现,但如果我想将现有的活动范围内的ShowDialog()这工作。日志消息告诉我我的线程需要Looper。我添加了一个 - 并会附加信息是否可行 - 但感觉好像我在这里走错了路。我需要的是做阻挡对话框配方(有用的,如果仅仅是因为所有其他平台拥有他们,因此移植的代码往往会这样的。)
可能阻止在拦截与非阻塞IO(电话之前,不会返回它已经获得了请求的输入或失败,与立即返回并报告任何输入(如果已经在缓冲区中) – 2010-09-24 04:47:03