Java 在使用Android应用程序内更新API时,我们何时获得InstallStatus.INSTALLED回调

Java 在使用Android应用程序内更新API时,我们何时获得InstallStatus.INSTALLED回调,java,android,in-app-update,Java,Android,In App Update,我正在使用android应用程序内更新API,但我没有得到InstallStatus.INSTALLED case的回调。我确实收到了InstallStatus.DOWNLOADED案例的回调。我也能够成功地更新应用程序,但我想在InstallStatus.INSTALLED case中执行一些逻辑。那么,我应该如何以及何时获得InstallStatus.INSTALLED case的回调 我的InstallStateUpdatedListener 类AppInstallStateUpdated

我正在使用android应用程序内更新API,但我没有得到InstallStatus.INSTALLED case的回调。我确实收到了InstallStatus.DOWNLOADED案例的回调。我也能够成功地更新应用程序,但我想在InstallStatus.INSTALLED case中执行一些逻辑。那么,我应该如何以及何时获得InstallStatus.INSTALLED case的回调

我的InstallStateUpdatedListener

类AppInstallStateUpdatedListener实现InstallStateUpdatedListener{ 私有AppUpdateManager AppUpdateManager; 私人观点主播观点; AppInstallStateUpdatedListener(AppUpdateManager AppUpdateManager,视图主播视图){ this.appUpdateManager=appUpdateManager; this.anchorView=主播视图; } @凌驾 公共无效onStateUpdate(InstallState状态){ if(state.installStatus()==installStatus.download){ popupSnackbarForCompleteUpdate(主播视图); Toast.makeText(上下文,“下载的应用程序内更新”,Toast.LENGTH_SHORT.show(); }else if(state.installStatus()==installStatus.INSTALLED){ Toast.makeText(上下文,“安装在应用程序中更新”,Toast.LENGTH_SHORT.show(); if(appUpdateManager!=null){ appUpdateManager.unregisterListener(此); } }否则{ Log.i(InAppUpdateUtils.class.getSimpleName(),“InstallStateUpdatedListener:state:”+state.installStatus()); } } } 这就是我如何附加侦听器(我有一个类“InAppUpdateUtils”,在它的构造函数中我正在初始化appUpdateManager并将侦听器附加到它)下面是构造函数

public InAppUpdateUtils(活动活动,查看主播视图){
appUpdateManager=appUpdateManager工厂。创建(活动);
if(侦听器==null){
listener=新的AppInstallStateUpdatedListener(appUpdateManager,主播视图);
appUpdateManager.registerListener(侦听器);
}
}
这就是我启动安装的方式

private void popupSnackbarForCompleteUpdate(查看主播视图){
斯纳克巴斯纳克巴=
蛇形条.制作(
主播视图,
“我们已下载更新”,
蛇形杆。长度(不确定);
snackbar.setAction(“安装”,v->{
updateCompleteTask=appUpdateManager.completeUpdate();
if(updateCompleteTask!=null){
updateCompleteTask.addOnSuccessListener(新的OnSuccessListener()){
@凌驾
成功时公开作废(作废结果){
Toast.makeText(QuikrApplication.context,“安装成功”,Toast.LENGTH_LONG.show();
Log.d(“应用程序更新”,“更新安装成功”);
}
});
updateCompleteTask.addOnFailureListener(新的OnFailureListener(){
@凌驾
公共失效失效失效(例外e){
Toast.makeText(上下文“安装失败”,Toast.LENGTH_LONG.show();
Log.d(“应用程序更新”,“更新安装失败”+e.toString());
}
});
}
});
TextView tv=snackbar.getView().findviewbyd(com.google.android.material.R.id.snackbar_text);
电视.彩色(彩色.白色);
setActionTextColor(anchorVIew.getContext().getResources().getColor(R.color.green));
snackbar.show();
}

这里也有同样的行为。我调试了我的应用程序,在它重新启动之前,我得到的最后一个状态是
InstallStatus.INSTALLING
。我的猜测是,在前台执行更新时,应用程序实际上会在启动已安装事件之前重新启动。当您从后台启动安装时,行为可能会有所不同。此处的行为相同。我调试了我的应用程序,在它重新启动之前,我得到的最后一个状态是
InstallStatus.INSTALLING
。我的猜测是,在前台执行更新时,应用程序实际上会在启动已安装事件之前重新启动。从后台启动安装时,行为可能会有所不同