1、版本检查代码添加优化处理
This commit is contained in:
shenzuqiang 2026-03-11 18:06:30 +08:00
parent 7546fdfd53
commit 7ca00b9626
1 changed files with 22 additions and 34 deletions

View File

@ -111,30 +111,23 @@ object UniAppUtils {
*/
private fun checkUpdate(uniVersion: UniVersionEntity, currentVersion: String): Boolean {
val version = uniVersion.version
if(version.isEmpty()){
return false
}
if(version.isEmpty())return false
val newVersions = version.split(".")
val originVersions = currentVersion.split(".")
if(newVersions.size != 3){
return false
}
if(originVersions.size != 3){
return false
}
try {
if(newVersions.size != 3 || originVersions.size != 3)return false
for (i in 0..2) {
if (Integer.parseInt(newVersions[i]) > Integer.parseInt(originVersions[i])) {
val newVal = newVersions[i].toIntOrNull() ?: 0
val oldVal = originVersions[i].toIntOrNull() ?: 0
if (newVal > oldVal) {
return true
} else if (Integer.parseInt(newVersions[i]) < Integer.parseInt(originVersions[i])) {
} else if (newVal < oldVal) {
return false
}
}
}catch (e: Exception){
e.printStackTrace()
Log.w(TAG, "checkUpdate: 解析版本号时,版本号格式错误 $version")
}
return false
}
@ -407,27 +400,22 @@ object UniAppUtils {
api.sendReq(req)
}
suspend fun isFileDownloadable(url: String): Boolean = withContext(Dispatchers.IO) {val client = OkHttpClient()
private val okHttpClient: OkHttpClient by lazy {
OkHttpClient.Builder()
// 如果需要,可以在这里配置超时、缓存等
// .connectTimeout(15, TimeUnit.SECONDS)
.build()
}
suspend fun isFileDownloadable(url: String): Boolean = withContext(Dispatchers.IO) {
val request = Request.Builder().url(url).build()
try {
client.newCall(request).execute().use { response ->
val body = response.body ?: return@withContext false
okHttpClient.newCall(request).execute().use { response ->
val body = response.body
val fileSize = body.contentLength()
// 下载文件小于1KB需要判断Url是否可靠
if (fileSize < 1024) {
if (!response.isSuccessful) {
val errorBody = body.string() // string() 会内部读取并关闭 body但外层有 .use 更保险
if (response.header("Content-Type")?.contains("application/json") == true) {
Log.i(TAG, "下载失败...$errorBody")
} else {
Log.i(TAG, "服务器错误...$errorBody")
}
return@withContext false
} else {
Log.i(TAG, "文件正常,可以下载!")
return@withContext true
}
return@withContext response.isSuccessful
} else {
return@withContext true
}