gpt4 book ai didi

android - AIDL:未调用 stub 类方法

转载 作者:行者123 更新时间:2023-11-30 04:52:42 25 4
gpt4 key购买 nike

我正在使用 AIDL 将对象从 Activity 传递到 Service,但出现了一些奇怪的行为。据我了解,AIDL 背后的想法是在 .aidl 文件中创建一个接口(interface),然后 android 将在动态生成的类中(部分)实现该接口(interface)。 Android 将创建一个名为 Stub 的抽象类,然后您需要对其进行实例化并添加您在 .aidl 接口(interface)中定义的方法的实现。一旦所有这些都准备就绪,就可以实例化远程服务,并且可以调用 .aidl 接口(interface)文件中声明的方法(以及在 Stub 类的实例化中定义的方法)。

这是我对该机制如何工作的印象,但是当我尝试实现它时,我注意到我在 Stub 类中声明的方法的定义没有运行;相反,正在运行的是 IBinder.transct()

这是我正在尝试做的事情的 fragment :

这是在我的服务中实现的:

public final INetService.Stub mBinder = new INetService.Stub() {

public void sendInteger(String ID, int data) throws RemoteException {
// TODO Auto-generated method stub

}

public void sendString(String ID, String data) throws RemoteException {
ServiceConnectionHandler connHandler = new ServiceConnectionHandler(ID, data);
}

public void sendObject(String ID, NetMessage data) throws RemoteException {
ServiceConnectionHandler connHandler = new ServiceConnectionHandler(ID, data.getData());
}

};

这是在我的 Activity 中,它尝试使用该服务并与之对话:

private INetService mService = null;
private NetServiceConnection conn = null;

class NetServiceConnection implements ServiceConnection
{
public void onServiceConnected(ComponentName name, IBinder service) {
mService = INetService.Stub.asInterface(service);
Log.d( "ADDERSERVICECLIENT","onServiceConnected" );
}

@Override
public void onServiceDisconnected(ComponentName name) {
mService = null;
Log.d( "ADDERSERVICECLIENT","onServiceDisconnected" );
}
};

private void initService()
{
conn = new NetServiceConnection();
Intent i = new Intent();
i.setClassName( "framework.network", "framework.network.NetService" );
if (!bindService( i, conn, Context.BIND_AUTO_CREATE))
{
Toast.makeText(this, "bindService fails..", Toast.LENGTH_LONG).show();
}
}

....

mService.sendString((char)0, finalMessage);

INetService.Stub 中定义的方法,如 sendString,似乎永远不会被调用;显然我错过了一些东西;有什么想法吗?

非常感谢!

伊娃

最佳答案

如果没有您的其余代码,很难回答您的问题。参见 herehere对于使用 AIDL 实现远程服务及其客户端的一对示例项目。也许这些实现会让您了解哪里出了问题。

关于android - AIDL:未调用 stub 类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2756730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com