活动上有处理程序方法,例如各种UI事件的onClick。如何保证这些方法的服务连接存在?服务连接具有onServiceConnected方法,用于在服务连接后进行初始化。然而,这似乎不是UI初始化的最佳位置。我想避免onClick(View v){service.getValue()}成为一个空服务引用。另一方面,我不希望UI呈现依赖于等待服务引用。似乎onCreate()是setContentView()等的正确位置。另一方面onCreate正在初始化可能尚未使用有效服务引用的处理程序。如何保证服务引用对UI处理程序方法有效。或者这是不使用服务引用的好理由?什么是最好的做法?
答案 0 :(得分:3)
您必须向活动发出信号,表明服务准备就绪。
最简单的方法是设置一个标志,例如serviceAvailable = true
,在ServiceConnection.onServiceConnected()中。然后,每当您需要服务时,请检查此标志。
答案 1 :(得分:0)
在UI事件侦听器中,您可以在使用它之前检查服务引用是否为null:
if (service != null)
{
service.getValue();
}