我们对使用服务进行 Android 编程非常陌生。我们设法通过一个应用程序运行服务。现在,我们有一个所有者应用程序“AppA”启动了该服务,还有另一个应用程序“AppB”想要使用该服务。那么我们如何将这个应用程序“AppB”绑定到同一个正在运行的服务呢?是否应该创建多个服务实例(这可能吗?)还是我们可以将多个应用程序绑定到同一个服务实例?
我们创建了一个名为 initservice() 的函数,以便将活动绑定到服务。
所有者 App A 在 initService() 中的代码:
connection = new SampleServiceConnection();
Intent i = new Intent();
i.setClassName("com.example.basicstuff",com.example.basicstuff.SampleService.class.getName());
this.startService(i);
boolean ret = bindService(i, connection, Context.BIND_AUTO_CREATE);
Log.d(TAG, "initService() bound with " + ret);
SampleServiceConnection 类是实现Andorid 的ServiceConnection 类的类。我已经实现了 onServiceConnected() 和 onServiceDisconnected() 函数。我的第一个所有者应用程序“AppA”是包 com.example.basicstuff,扩展服务类的类是 SampleService。执行 bindService() 函数后,LogCat 显示“initService() bound with true”。
我还创建了一个名为 ISampleService 的 .aidl 文件。
App B 在 initService() 中的代码
connection = new SampleServiceConnection();
Intent i = new Intent("com.example.GameBook_Chat.ISampleService");
System.out.println(this.startService(i));
System.out.println("service running");
boolean ret = bindService(i, connection, Context.BIND_AUTO_CREATE);
Log.d(TAG, "initService() bound with " + ret);
我的第二个包名称是 com.example.GameBook_Chat,它希望与上面代码中运行的相同服务进行通信。在执行 bindService() 函数时,LogCat 服务会显示“initService() bound with false”
所以基本上我无法让第二个应用程序与服务通信。有人可以告诉我可以进行哪些更正吗?