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

Java 如何从更新引擎服务获取更新状态?,java,android,Java,Android,我想通过使用更新引擎服务 此类允许我像这样绑定更新引擎服务: updateEngine.bind(新的UpdateEngineCallback(){ @凌驾 状态更新时公共无效(整数状态,浮点v){ } @凌驾 public void onPayloadApplicationComplete(内部状态){ } },新处理程序()); 绑定服务时,我需要知道服务的状态。UpdateEngine类没有getStatus()这样的函数 这个onStatusUpdate回调是否保证至少调用一次,以便我

我想通过使用更新引擎服务

此类允许我像这样绑定更新引擎服务:

updateEngine.bind(新的UpdateEngineCallback(){
@凌驾
状态更新时公共无效(整数状态,浮点v){
}
@凌驾
public void onPayloadApplicationComplete(内部状态){
}
},新处理程序());
绑定服务时,我需要知道服务的状态。UpdateEngine类没有getStatus()这样的函数


这个onStatusUpdate回调是否保证至少调用一次,以便我们在第一次绑定到服务时可以知道状态?

我不知道它是否保证用于特定版本的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();
}
Status binderUpdateEngineeAndRoidService::bind(
常量android::sp和回调,bool*返回值){
回调。放置回调(回调);
const安卓::sp和回调绑定器=
IUpdateEngineCallback::asBinder(回调);
自动绑定器包装器=android::BinderRapper::Get();
活页夹包装器->注册表项通知(
你的活页夹,
base::Bind(
base::IgnoreResult(&BinderUpdateEngineeAndRoidService::UnbindCallback),
基::未恢复(此),
base::未恢复(callback_binder.get());
//在连接时发送状态更新(目前未发送更新时除外),
//因为状态更新是单向的,我们不需要等待
//答复。
如果(最后状态)=-1)
回调->状态更新(上次状态、上次进度);
*返回值=真;
返回状态::ok();
}
如果有更好的答案,我会选择接受