我正在使用 AIDL。我有一项服务和一项活动。在 onCreate 函数中,我绑定了服务,我想更新 UI:
private ServiceConnection conn = null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
bindService();
String name = conn.s.getName();
}
public class ServiceConnection implements ServiceConnection {
public IService s = null;
public void onServiceConnected(ComponentName className, IBinder boundService) {
s = IService.Stub.asInterface((IBinder) boundService);
Log.d(getClass().getSimpleName(), "onServiceConnected()");
}
public void onServiceDisconnected(ComponentName className) {
s = null;
Log.d(getClass().getSimpleName(), "onServiceDisconnected");
}
}
所以我得到一个空指针,因为该服务尚未绑定。如何检查活动是否绑定了服务?
我真正需要的很简单:创建活动 -> 使用 AIDL 从服务获取信息 -> 更新 UI。如果我放一个“更新”按钮一切正常,但我不知道如何自动执行此操作。有什么想法?我可以做一个线程:
while(conn.s==null)
;
updateUI();
但我认为它既不优雅也不高效。