我在eclipse的同一个工作区内有2个 *不同的项目* (大多数AIDL示例处理 相同的 项目中的不同进程)。项目A只是HelloWorld,它只显示2个数字的总和。我从一个名为MyFirstApp的客户端远程调用它来显示它。
问题:永远不会调用onServiceConnected()方法。
到目前为止我尝试了什么:
1)清单文件有android:process =“:remote”>标签。存在意图过滤器。是的,所有这些都在应用程序标签内。这是:
<service android:name=".ArithmeticService"
android:process=":remote">
<intent-filter >
<action android:name="com.example.helloworld.ArithmeticService"/>
</intent-filter>
</service>
</application>
2)在我的ArithmeticService中,函数onBind()不会简单地返回Null,而是返回mBinder。这是:
@Override
public IBinder onBind(Intent intent) {
// Return the interface
Log.d(getClass().getSimpleName(),"IBinder");
return mBinder;
}
3)在客户端,接口的实现位于服务器端的同一个包中。
4)在我的客户端MainActivity的onCreate()函数中,我正在调用函数initConnection(),如下所示:
void initConnection(){
mServiceConnection = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName name) {
// TODO Auto-generated method stub
mService = null;
Toast.makeText(getApplicationContext(), "no", Toast.LENGTH_SHORT).show();
Log.d("IRemote", "Binding - Service disconnected");
}
@Override
public void onServiceConnected(ComponentName name, IBinder service)
{
// TODO Auto-generated method stub
mService = IRemote.Stub.asInterface((IBinder) service);
Toast.makeText(getApplicationContext(), "yes", Toast.LENGTH_SHORT).show();
Log.d("IRemote", "Binding is done - Service connected");
}
};
if(mService == null)
{
Intent it = new Intent();
it.setAction("com.example.helloworld.ArithmeticService");
//binding to remote service
bindService(it, mServiceConnection, Service.BIND_AUTO_CREATE);
}
}
其余代码非常简单。单击按钮时,应调用远程服务器,并显示2个numbrs的总和。
非常感谢任何帮助。
答案 0 :(得分:1)
经过几天的尝试后得到它:项目的名称应该是 小案例 。它是Eclipse怪癖还是Android怪癖?我不知道。 但是工作正常。