我正在编写一个 Android 2.1 应用程序,当外部事件触发其中一个 GPIO 时,它应该向用户显示一个对话框。我已经编写了 Linux 设备驱动程序,并为它编写了 JNI 用户空间接口。当我的应用程序启动时,它会启动一个轮询设备驱动程序的远程服务。使用aidl,我设法在活动和服务之间进行通信,但是,当我关闭活动时,我希望服务重新启动活动。我使用以下代码实现了这一点:(在服务中)
Intent dialogIntent = new Intent(getBaseContext(),WiegandDemoActivity.class);
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplication().startActivity(dialogIntent);
在那之后,我想使用aidl进行交流,所以我使用了:
synchronized (listeners) {
for (WiegandListener listener : listeners) {
try {
listener.handleWiegandUpdated();
...
活动被带到前面,但是aidl 消息没有到达它。为什么会这样?(当活动在前面时,一切正常)
我不想在这里发布所有代码,因为它很大,但是如果您需要更多信息,请不要犹豫。
谢谢。