add retry

This commit is contained in:
Li ZongYing 2024-01-08 20:07:53 +08:00
parent 0bfac7d679
commit c10d8b688f
5 changed files with 33 additions and 30 deletions

View File

@ -14,6 +14,11 @@
## 更新日志 ## 更新日志
### v1.3.2
* 增加重试,减少因网络问题导致的播放失败
* 优化横幅banner
### v1.2.6 ### v1.2.6
* 支持安卓4.2 * 支持安卓4.2

View File

@ -12,12 +12,11 @@
android:icon="@mipmap/ic_launcher" android:icon="@mipmap/ic_launcher"
android:label="@string/app_name" android:label="@string/app_name"
android:supportsRtl="true" android:supportsRtl="true"
android:usesCleartextTraffic="true"
android:theme="@style/Theme.MyTV"> android:theme="@style/Theme.MyTV">
<activity <activity
android:keepScreenOn="true" android:keepScreenOn="true"
android:name=".MainActivity" android:name=".MainActivity"
android:banner="@drawable/logo" android:banner="@drawable/banner"
android:exported="true" android:exported="true"
android:icon="@drawable/logo" android:icon="@drawable/logo"
android:logo="@drawable/logo" android:logo="@drawable/logo"

View File

@ -26,7 +26,6 @@ import retrofit2.Response
import javax.crypto.Cipher import javax.crypto.Cipher
import javax.crypto.spec.IvParameterSpec import javax.crypto.spec.IvParameterSpec
import javax.crypto.spec.SecretKeySpec import javax.crypto.spec.SecretKeySpec
import kotlin.reflect.KFunction0
class Request { class Request {
@ -93,27 +92,6 @@ class Request {
ysp = YSP(context) ysp = YSP(context)
} }
fun fetchToken(fragmentReady: KFunction0<Unit>) {
yspTokenService.getInfo()
.enqueue(object : Callback<Info> {
override fun onResponse(call: Call<Info>, response: Response<Info>) {
if (response.isSuccessful) {
val info = response.body()
token = info?.data?.token
Log.i(TAG, "info success $token")
} else {
Log.e(TAG, "info status error")
}
fragmentReady()
}
override fun onFailure(call: Call<Info>, t: Throwable) {
Log.e(TAG, "info request error $t")
fragmentReady()
}
})
}
fun fetchVideo(tvModel: TVViewModel, cookie: String) { fun fetchVideo(tvModel: TVViewModel, cookie: String) {
if (::myRunnable.isInitialized) { if (::myRunnable.isInitialized) {
handler.removeCallbacks(myRunnable) handler.removeCallbacks(myRunnable)
@ -150,26 +128,38 @@ class Request {
Log.i(TAG, "$title url $url") Log.i(TAG, "$title url $url")
tvModel.addVideoUrl(url) tvModel.addVideoUrl(url)
tvModel.allReady() tvModel.allReady()
tvModel.retryTimes = 0
myRunnable = MyRunnable(tvModel) myRunnable = MyRunnable(tvModel)
handler.post(myRunnable) handler.post(myRunnable)
} else { } else {
Log.e(TAG, "$title key error") Log.e(TAG, "$title key error")
tvModel.firstSource() if (tvModel.retryTimes < tvModel.retryMaxTimes) {
tvModel.retryTimes++
fetchData(tvModel)
}
} }
} else { } else {
Log.e(TAG, "$title url error $request") Log.e(TAG, "$title url error $request")
tvModel.firstSource() if (tvModel.retryTimes < tvModel.retryMaxTimes) {
tvModel.retryTimes++
fetchData(tvModel)
}
} }
} else { } else {
Log.e(TAG, "$title status error") Log.e(TAG, "$title status error")
tvModel.firstSource() if (tvModel.retryTimes < tvModel.retryMaxTimes) {
tvModel.retryTimes++
fetchData(tvModel)
}
} }
} }
override fun onFailure(call: Call<LiveInfo>, t: Throwable) { override fun onFailure(call: Call<LiveInfo>, t: Throwable) {
Log.e(TAG, "$title request error") Log.e(TAG, "$title request error")
tvModel.firstSource() if (tvModel.retryTimes < tvModel.retryMaxTimes) {
tvModel.retryTimes++
fetchData(tvModel)
}
} }
}) })
} }
@ -207,11 +197,19 @@ class Request {
fetchVideo(tvModel, cookie) fetchVideo(tvModel, cookie)
} else { } else {
Log.e(TAG, "info status error") Log.e(TAG, "info status error")
if (tvModel.retryTimes < tvModel.retryMaxTimes) {
tvModel.retryTimes++
fetchData(tvModel)
}
} }
} }
override fun onFailure(call: Call<Info>, t: Throwable) { override fun onFailure(call: Call<Info>, t: Throwable) {
Log.e(TAG, "info request error $t") Log.e(TAG, "info request error $t")
if (tvModel.retryTimes < tvModel.retryMaxTimes) {
tvModel.retryTimes++
fetchData(tvModel)
}
} }
}) })
} else { } else {
@ -251,7 +249,6 @@ class Request {
// Log.d(TAG, "$title kvcollect success") // Log.d(TAG, "$title kvcollect success")
} else { } else {
Log.e(TAG, "$title kvcollect status error") Log.e(TAG, "$title kvcollect status error")
tvModel.firstSource()
} }
} }

View File

@ -19,6 +19,8 @@ class TVViewModel(private var tv: TV) : ViewModel() {
private var rowPosition: Int = 0 private var rowPosition: Int = 0
private var itemPosition: Int = 0 private var itemPosition: Int = 0
var retryTimes: Int = 0
var retryMaxTimes: Int = 3
var programUpdateTime: Long = 0 var programUpdateTime: Long = 0
private val _programId = MutableLiveData<String>() private val _programId = MutableLiveData<String>()

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB