1

我在 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 个数字的总和。

任何帮助将不胜感激。

4

1 回答 1

1

经过几天的尝试,明白了:项目名称应该是small-case。是 Eclipse 怪癖还是 Android 怪癖?我不知道。但它有效。

于 2013-09-12T10:11:51.920 回答