}
}
- private var hasCheck = false
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
return super.onStartCommand(intent, flags, startId)
}
+
+
private fun checkRemote() {
App.sHandler.postDelayed({
checkVersion(VersionCheckFrom.BOOT_CHECK)
}
private fun doCheck() {
- if (hasCheck) {
- Log.d(TAG, "has checked..")
- return
- }
- hasCheck = true
checkRemote()
OtaViewModelCreator.getOtaViewModel(object : OtaViewModelCreator.OnViewModelInitListener {
override fun onViewModelInit(otaViewModel: OtaViewModel?) {
})
}
+
private fun checkVersion(from: VersionCheckFrom) {
//连接上了,那么就去检查更新
otaViewModel?.checkUpdate(from)
import android.widget.TextView
import android.widget.Toast
import androidx.lifecycle.MutableLiveData
-import androidx.lifecycle.Transformations
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.ic.icfotaclient.App
//升级数据
val otaInfo = MutableLiveData<OtaInfo?>()
- val testObserver = Transformations.switchMap(otaInfo) { otaInfo ->
- val mutableLiveData = MutableLiveData<String>()
- mutableLiveData.value = otaInfo?.versionCode
- mutableLiveData
- }
-
//下载进度,百分比
val downloadProgress = MutableLiveData<Int>()
return result
}
+ private var hasCheck = false
+
//检查更新,需要在子线程种完成
fun checkUpdate(from: VersionCheckFrom) {
+ if (hasCheck) {
+ Log.d(TAG, "has checked..")
+ return
+ }
+ hasCheck = true
if (currentActionState.value == UpdateActionState.CHECKING) {
Log.d(TAG, "checking....")
return
private fun checkRemote(from: VersionCheckFrom) {
if (!checkNetWork()) {
currentActionState.postValue(UpdateActionState.NO_NETWORK)
+ //reset has check.
+ hasCheck = false
Log.d(TAG, "no network...")
return
}
checkHasNewVersion
}
//结果
- Log.d(TAG, "check result ==> $result")
- otaInfo.postValue(result)
+ Log.d(TAG, "check result ==> $result ... ${Thread.currentThread().name}")
+ otaInfo.value = result
//如果不为null,弹出一个系统级的dialog,也就是在任何地方都可以弹出的
- currentActionState.postValue(
- if (result == null) {
- //createNewVersionDialog( "无描述")
- //已经是最新版本了
- UpdateActionState.LAST_VERSION
+ currentActionState.value = if (result == null) {
+ //createNewVersionDialog( "无描述")
+ //已经是最新版本了
+ UpdateActionState.LAST_VERSION
+ } else {
+ //保存一下是哪家的平台,后面用于判断是否需要上报结果
+ SPUtil.getSharePreference().edit()
+ .putString(SPUtil.KEY_SERVER_INC, result.serverInc.toString())
+ .apply()
+ //如果是强制升级的,不等通知用户结果了直接升级
+ if (result.isForce) {
+ Log.d(TAG, "force download data...")
+ //直接调用下载
+ downloadPackage()
} else {
- //保存一下是哪家的平台,后面用于判断是否需要上报结果
- SPUtil.getSharePreference().edit()
- .putString(SPUtil.KEY_SERVER_INC, result.serverInc.toString())
- .apply()
- //如果是强制升级的,不等通知用户结果了直接升级
- if (result.isForce) {
- Log.d(TAG, "force download data...")
- //直接调用下载
- downloadPackage()
- } else {
- //不是UI来的,可以创建一个弹窗,否则不弹窗,非强制升级
- if (from != VersionCheckFrom.UI_CHECK) {
- createNewVersionDialog(result.updateDesc ?: "无描述")
- }
+ //不是UI来的,可以创建一个弹窗,否则不弹窗,非强制升级
+ if (from != VersionCheckFrom.UI_CHECK) {
+ createNewVersionDialog(result.updateDesc ?: "无描述")
}
- //有新版本
- UpdateActionState.NEW_VERSION
}
- )
+ //有新版本
+ UpdateActionState.NEW_VERSION
+ }
} catch (e: Exception) {
Log.e(TAG, e.toString())
}
}
//判断size是否大于100M,如果大于100M的话那么就提示连接wifi进行下载
try {
+ Log.d(TAG, "otaInfo == > ${otaInfo.value}")
if (otaInfo.value?.packageSize!! > 100000000L && !wifiConnected) {
isTipsWifiConnect.postValue(true)
//提示用户连接wifi下载