         
         func confirmToUpdate(reason: String?, newVersion: Version, cancelable: Bool) {
             DispatchQueue.main.async { [weak self] in
+                hm.hide(animated: false)
                 let alert = UIAlertController(title: NSLocalizedString("数据需要更新", comment: "弹出框标题"), message: reason, preferredStyle: .alert)
                 alert.addAction(UIAlertAction(title: NSLocalizedString("确定", comment: "弹出框按钮"), style: .default, handler: { (alertAction) in
                     vm.dataVersion = newVersion

                        let reason = NSLocalizedString("数据存在新版本，推荐进行更新，请点击确定开始更新", comment: "")
                        confirmToUpdate(reason: reason, newVersion: vm.minimumSupportedDataVersion, cancelable: true)
                    
                    // finally, do normal updating, because local minimum supported version has no patch information.
                    } else {
                        doUpdating(types: types)
                    }
                }
            })

        }
        if updater.isWorking || gr.isProcessing { return }
        
        hm.show()
        hm.cancelAction = {
            updater.cancelCurrentSession()
        }
        hm.setup(NSLocalizedString("检查更新中", comment: "更新框"), animated: true, cancelable: true)
        
        func doUpdating(types: CGSSUpdateDataTypes) {
            DispatchQueue.main.async {
                hm.show()
