【发布时间】:2010-12-24 14:59:37
【问题描述】:
在我的应用程序中,我有两个独立的 APK。第一个 APK 的 Activity (A1) 启动本地服务,并能够调用该服务提供的方法。稍后活动 A1 从第二个 APK 启动另一个活动 (A2)。 A2 活动尝试连接到由 A1 启动的本地服务。这两个活动都在具有相同 SharedUserID 的同一进程中运行。提供服务接口,如 LocalService 的 API 示例所示。服务的 onBind 方法返回具有方法 getService() 的 LocalBinder 实例。 当调用 A2 的 onServiceConnected 时,当我尝试从 IBinder 转换为 MyService.LocalBinder 时出现 ClassCastException。
在调试器中,我可以看到 A2 活动的 onServiceConnected 的服务参数是 MyService.LocalBinder 的正确实例。我什至可以在调试器中查看 MyService 的所有属性,但是当我尝试将 IBinder 服务强制转换为 MyService.LocalBinder 时,我得到了 ClassCastException 异常?有什么办法还是我必须使用 AIDL?
public void onServiceConnected(ComponentName className, IBinder service)
{
try
{
MyService.LocalBinder binder = (MyService.LocalBinder)service;
m_IService = binder.getService();
}
catch(ClassCastException e)
{
}
}
【问题讨论】:
标签: android service local classcastexception