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

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

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

updateEngine.bind(new UpdateEngineCallback() {

            @Override

            public void onStatusUpdate(int status, float v) {


            }


            @Override

            public void onPayloadApplicationComplete(int status) {


            }

        }, new Handler()) ;

绑定服务时我需要知道服务的状态。UpdateEngine 类没有 getStatus() 等函数。


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


森林海
浏览 94回答 1
1回答

慕婉清6462132

我不知道对于特定版本的 Android 是否有保证,但查看此源代码,似乎它至少调用 onStatusUpdate 函数一次,除非到目前为止没有尝试更新。Status BinderUpdateEngineAndroidService::bind(&nbsp; &nbsp; const android::sp<IUpdateEngineCallback>& callback, bool* return_value) {&nbsp; callbacks_.emplace_back(callback);&nbsp; const android::sp<IBinder>& callback_binder =&nbsp; &nbsp; &nbsp; IUpdateEngineCallback::asBinder(callback);&nbsp; auto binder_wrapper = android::BinderWrapper::Get();&nbsp; binder_wrapper->RegisterForDeathNotifications(&nbsp; &nbsp; &nbsp; callback_binder,&nbsp; &nbsp; &nbsp; base::Bind(&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; base::IgnoreResult(&BinderUpdateEngineAndroidService::UnbindCallback),&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; base::Unretained(this),&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; base::Unretained(callback_binder.get())));&nbsp; // Send an status update on connection (except when no update sent so far),&nbsp; // since the status update is oneway and we don't need to wait for the&nbsp; // response.&nbsp; if (last_status_ != -1)&nbsp; &nbsp; callback->onStatusUpdate(last_status_, last_progress_);&nbsp; *return_value = true;&nbsp; return Status::ok();}如果有更好的答案出现,我会选择接受。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java