我想通过 UpdateEngine class 使用更新引擎服务.
这个类允许我像这样绑定(bind)更新引擎服务:
updateEngine.bind(new UpdateEngineCallback() {
@Override
public void onStatusUpdate(int status, float v) {
}
@Override
public void onPayloadApplicationComplete(int status) {
}
}, new Handler()) ;
绑定(bind)服务时我需要知道服务的状态。 UpdateEngine 类没有 getStatus() 等函数。
这个 onStatusUpdate 回调是否保证至少被调用一次,以便我们在第一次绑定(bind)到服务时知道状态?
最佳答案
我不知道特定版本的 Android 是否有保证,但请查看 this source code ,似乎它至少调用一次 onStatusUpdate 函数,除非到目前为止没有尝试更新。
Status BinderUpdateEngineAndroidService::bind(
const android::sp<IUpdateEngineCallback>& callback, bool* return_value) {
callbacks_.emplace_back(callback);
const android::sp<IBinder>& callback_binder =
IUpdateEngineCallback::asBinder(callback);
auto binder_wrapper = android::BinderWrapper::Get();
binder_wrapper->RegisterForDeathNotifications(
callback_binder,
base::Bind(
base::IgnoreResult(&BinderUpdateEngineAndroidService::UnbindCallback),
base::Unretained(this),
base::Unretained(callback_binder.get())));
// Send an status update on connection (except when no update sent so far),
// since the status update is oneway and we don't need to wait for the
// response.
if (last_status_ != -1)
callback->onStatusUpdate(last_status_, last_progress_);
*return_value = true;
return Status::ok();
}
如果有更好的答案,我会选择接受。
关于java - 如何从更新引擎服务获取更新状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58412227/