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

标签 java android

我想通过 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/

相关文章:

java - 我对 Connect Four 的评估函数和 Alpha-beta 修剪的实现不够智能

java - JSR 363 的 UCUM 单位格式

java - 当我想在方法中引用实例变量时,我应该使用 "this"关键字吗?

android - ArrayIndexOutOfBoundsException 没有任何原因

java 。模运算符的特殊输出

java - 如何嵌套枚举

android - 如何从共享首选项中获取包名称?

android - 如何自定义 NumberPicker

java - 用新的 Asynctask 替换 AsyncTask 时会发生什么

安卓 : How to populate a ListView with alphabet indexer and fastscroll as in contacts app. ?