我在使用接口stub()
绑定服务时遇到错误。
这是我的连接代码:
class LogConnection implements ServiceConnection {
public void onServiceConnected(ComponentName className,
IBinder boundService) {
logService = ILogService.Stub.asInterface((IBinder) boundService);
}
但它不适合我。
logcat的:
06-22 12:17:28.632: I/dalvikvm(1973): Could not find method com.sam.logservice.ILogService$Stub.asInterface, referenced from method com.sam.logclient.LogClientActivity$LogConnection.onServiceConnected
06-22 12:17:28.662: W/dalvikvm(1973): VFY: unable to resolve static method 28: Lcom/sam/logservice/ILogService$Stub;.asInterface (Landroid/os/IBinder;)Lcom/sam/logservice/ILogService;
06-22 12:17:28.662: D/dalvikvm(1973): VFY: replacing opcode 0x71 at 0x0009
06-22 12:17:28.662: D/dalvikvm(1973): VFY: dead code 0x000c-0016 in Lcom/sam/logclient/LogClientActivity$LogConnection;.onServiceConnected (Landroid/content/ComponentName;Landroid/os/IBinder;)V
06-22 12:17:28.702: W/ActivityManager(61): Unable to start service Intent { cmp=com.sam.logclient/com.sam.logservice.ILogService }: not found
修改 我关注以下链接的示例:
当我在那时调试代码的时候,我发现了同样的事情 职位
logService = ILogService.Stub.asInterface((IBinder) boundService);
希望你有一些解决方案。
如果您想了解更多有关原因的数据,请与我们联系。
答案 0 :(得分:0)
在你的代码中,我观察到你为什么要将bindService转换为IBinder,实际上没有必要将它转换为原样传递它。 所以,你的行应该是这样的
logService = ILogService.Stub.asInterface(boundService);
确保服务写在同一个包中..
扩展服务只是创建接口对象的类
ILogService.Stub logService = new ILogService.Stub();
并在onBind方法中返回它,如下所示
@Override
public IBinder onBind(Intent intent) {
return logService;
}
希望这个解释对你有用。