为了账号安全,请及时绑定邮箱和手机立即绑定

如何从更新引擎服务获取更新状态?

如何从更新引擎服务获取更新状态?

森林海 2023-11-01 21:50:18
我想通过UpdateEngine 类使用更新引擎服务。这个类允许我像这样绑定更新引擎服务:updateEngine.bind(new UpdateEngineCallback() {            @Override            public void onStatusUpdate(int status, float v) {            }            @Override            public void onPayloadApplicationComplete(int status) {            }        }, new Handler()) ;绑定服务时我需要知道服务的状态。UpdateEngine 类没有 getStatus() 等函数。这个 onStatusUpdate 回调是否保证至少被调用一次,以便我们在第一次绑定到服务时可以知道状态?
查看完整描述

1 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

我不知道对于特定版本的 Android 是否有保证,但查看此源代码,似乎它至少调用 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();

}

如果有更好的答案出现,我会选择接受。


查看完整回答
反对 回复 2023-11-01
  • 1 回答
  • 0 关注
  • 93 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信