相关疑难解决方法(0)

Android RemoteExceptions和服务

所以我为Android操作系统编写了一个服务和一个活动.

我的服务在它自己的进程中运行,因此我的活动和服务之间的所有通信都是通过IPC进行的.我使用标准的Android .aidl机制.

到目前为止一切正常.但是,AIDL使用"throws RemoteException"生成所有方法存根,因此我必须处理它们.

我对整个Android源代码做了快速的grep,并且只发现了三个抛出此异常的情况.这些是我不联系的不同服务.

我也检查了C源代码,因为理论上可以使用JNI接口生成RemoteExceptions.没有出现任何问题.

我的印象是每个人都像这样处理它们:

  try {

    mService.someMethodCall (someArguments);

  } catch (RemoteException e) {

    e.printStackTrace();

  }
Run Code Online (Sandbox Code Playgroud)

这不是可靠的代码,我不想在我的代码库中使用这样的东西.

除此之外:我试图通过IPC自己抛出一个RemoteException,我得到的只是一个堆栈跟踪和系统日志消息,它告诉我还不支持异常.我的应用程序从未看到异常,抛出异常的服务最终处于一个非常奇怪的状态(半途工作):-(

问题是:

  • 是否会抛出这些异常?

  • 有没有人见过这样的try-catch块捕获RemoteException?

  • 难道它们不存在而且我们只是被迫处理它们,因为"抛出RemoteException"是死代码还是AIDL编译器内部的遗留问题?

免责声明:我还没有阅读完整的源代码.我使用Grep来查找RemoteException的出现,所以我可能因为不同的空格使用而错过了一些.

service android aidl remoteexception

26
推荐指数
2
解决办法
2万
查看次数

标签 统计

aidl ×1

android ×1

remoteexception ×1

service ×1