最近在做静默安装发现在做下载按钮状态安装的时候 例如一个TextView文字的修改,起初代码格式为如下所示
btnDown.setTag(TAG_INSTALLING);
updateDownloadBtnState(btnDown,
game, DownloadState.Finished);//更新按钮状态 此方法包含按钮文字和颜色
ModMgr.getGameDownloadMgr().installApk(context, game);//安装apk
game.mIsInstalling = false;
发现在安装中会出现按钮状态还没有改变的时候 apk安装环节就已经执行,所以因此推测在底层ui刷新和其他操作并不是线性执行,虚拟机先执行安装操作后才执行按钮刷新操作,所以做了以下修改。
btnDown.setTag(TAG_INSTALLING);
updateDownloadBtnState(btnDown,
game, DownloadState.Finished);
MessageManager.getInstance().asyncRun(100, new Runner() {
@Override
public void call() {
ModMgr.getGameDownloadMgr().installApk(context, game);
game.mIsInstalling = false;
}
});//此方法作用为在主线程延时100秒后执行 其中调用了handler.postDelayed实现
在延时主线程安装操作100毫秒以后 按钮状态改变后才执行安装操作 达成所期望效果。