目标:启动服务,等待连接准备好然后返回的方法。
此构造函数启动 (GPS) 服务。我需要确保在从构造函数返回之前调用了onServiceConnected:
public GPS(Context context) {
Intent intent = new Intent(context, GpsService.class);
context.startService(intent);
context.bindService(intent, this, Context.BIND_AUTO_CREATE);
// Want to wait here for the callback to onServiceConnected before returning.
...
}
public void onServiceConnected(ComponentName className, IBinder service) {
...
}
为什么?我正在编写Android Junit Tests,并且testSomething () 方法失败,因为它们在服务连接之前运行。而且因为回调是为 Android 而不是为我制作的,所以我不能应用(我相信)传统的 Thread/wait/notify 解决方案。
我编写了一个运行良好的跟踪应用程序,因为代码总是检查并且如果连接尚未准备好则什么也不做,但 Junit 测试是另一回事。