繁体   English   中英

Android AIDL活动和服务问题

[英]Android AIDL problem with activity and service

我正在编写一个Android 2.1应用程序,该应用程序应该在外部事件触发GPIO之一时向用户显示对话框。 我已经编写了Linux设备驱动程序,并为其编写了JNI用户空间接口。 当我的应用程序启动时,它会启动一个轮询设备驱动程序的远程服务。 使用aidl,我设法在活动和服务之间进行通信,但是,当我关闭活动时,我希望服务重新启动活动。 我使用以下代码实现了这一点:(在服务中)

Intent dialogIntent = new Intent(getBaseContext(),WiegandDemoActivity.class);
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplication().startActivity(dialogIntent);

之后,我想使用辅助工具进行交流,因此我使用了:

synchronized (listeners) {
for (WiegandListener listener : listeners) {
    try {
         listener.handleWiegandUpdated();
...

该活动被带到了最前面,但是辅助消息没有到达。 为什么会这样呢? (当活动在最前面时,一切正常

我不想在这里发布所有代码,因为它很大,但是如果您需要更多信息,请不要犹豫。

谢谢。

您将需要重新绑定到远程活动。 在活动启动时将Activity注册到服务是否可行-因此,当您知道新的Activity准备好接收传入消息时,就会触发更新代码?

另外,请确保在活动关闭时取消注册事件监听器-否则它会挂起。 如果它包含对实际活动的引用,那么整个活动将保留在内存中,并且不会收集垃圾(即使该活动已关闭并且您已经创建了一个新活动)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM