diff --git a/app/src/main/java/io/legado/app/help/http/BackstageWebView.kt b/app/src/main/java/io/legado/app/help/http/BackstageWebView.kt index 16b89cd63..492714204 100644 --- a/app/src/main/java/io/legado/app/help/http/BackstageWebView.kt +++ b/app/src/main/java/io/legado/app/help/http/BackstageWebView.kt @@ -18,6 +18,7 @@ import io.legado.app.help.coroutine.Coroutine import io.legado.app.utils.runOnUI import kotlinx.coroutines.Runnable import kotlinx.coroutines.suspendCancellableCoroutine +import kotlinx.coroutines.withTimeout import org.apache.commons.text.StringEscapeUtils import splitties.init.appCtx import java.lang.ref.WeakReference @@ -42,28 +43,30 @@ class BackstageWebView( private var callback: Callback? = null private var mWebView: WebView? = null - suspend fun getStrResponse(): StrResponse = suspendCancellableCoroutine { block -> - block.invokeOnCancellation { - runOnUI { - destroy() - } - } - callback = object : Callback() { - override fun onResult(response: StrResponse) { - if (!block.isCompleted) - block.resume(response) + suspend fun getStrResponse(): StrResponse = withTimeout(60000L) { + suspendCancellableCoroutine { block -> + block.invokeOnCancellation { + runOnUI { + destroy() + } } + callback = object : Callback() { + override fun onResult(response: StrResponse) { + if (!block.isCompleted) + block.resume(response) + } - override fun onError(error: Throwable) { - if (!block.isCompleted) - block.resumeWithException(error) + override fun onError(error: Throwable) { + if (!block.isCompleted) + block.resumeWithException(error) + } } - } - runOnUI { - try { - load() - } catch (error: Throwable) { - block.resumeWithException(error) + runOnUI { + try { + load() + } catch (error: Throwable) { + block.resumeWithException(error) + } } } }