diff --git a/app/src/main/java/io/legado/app/service/HttpReadAloudService.kt b/app/src/main/java/io/legado/app/service/HttpReadAloudService.kt index 64b9d93e3..db5a97951 100644 --- a/app/src/main/java/io/legado/app/service/HttpReadAloudService.kt +++ b/app/src/main/java/io/legado/app/service/HttpReadAloudService.kt @@ -14,6 +14,8 @@ import io.legado.app.model.ReadBook import io.legado.app.model.analyzeRule.AnalyzeUrl import io.legado.app.utils.* import kotlinx.coroutines.* +import kotlinx.coroutines.sync.Mutex +import kotlinx.coroutines.sync.withLock import okhttp3.Response import java.io.File import java.io.FileDescriptor @@ -36,6 +38,7 @@ class HttpReadAloudService : BaseReadAloudService(), private var task: Coroutine<*>? = null private var playingIndex = -1 private var playIndexJob: Job? = null + private val mutex = Mutex() override fun onCreate() { super.onCreate() @@ -126,7 +129,9 @@ class HttpReadAloudService : BaseReadAloudService(), source = httpTts, headerMapF = httpTts.getHeaderMap(true) ) - var response = analyzeUrl.getResponseAwait() + var response = mutex.withLock { + analyzeUrl.getResponseAwait() + } ensureActive() httpTts.loginCheckJs?.takeIf { checkJs -> checkJs.isNotBlank()