gpt4 book ai didi

android - 如何阻止 Coroutine CancellationException 导致 Activity 无法完成?

转载 作者:行者123 更新时间:2023-12-02 13:36:17 24 4
gpt4 key购买 nike

我在 Crashlytics 中收到了相当多的致命崩溃报告,这似乎是由协程取消引起的。而且我不知道如何补救它,也无法重现它。

Crashlytics 中的错误是:

Fatal Exception: java.lang.RuntimeException: Unable to destroy activity {...ui.main.MainActivity}: kotlinx.coroutines.JobCancellationException: Job was cancelled; job=SupervisorJobImpl{Cancelled}@1ad5bcf
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:4682)
at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:4700)
at android.app.servertransaction.DestroyActivityItem.execute(DestroyActivityItem.java:39)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:145)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1926)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:6981)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445)

Caused by kotlinx.coroutines.JobCancellationException: Job was cancelled

我的 MainActivity没有 SupervisorJob , 但我所有的 Fragment扩展了一个具有 SupervisorJob 的基类.基本 fragment 也称为 SupervisorJob.cancelChildren()onStop方法。

关于如何解决这个问题的任何想法?甚至如何收集有关发生地点/原因的更多信息?我自己无法重现它,但它在现场发生了很多。

最佳答案

Unable to destroy activity 告诉您 onDestory 方法无法完成。

Caused by kotlinx.coroutines.JobCancellationException: Job was cancelled 告诉你你正在与一个工作交互,但不应该是因为它被取消了。

与其使用 SupervisorJob.cancelChildren(),不如使用 structured concurrency , 反而。这意味着您的每一个作业都应该从一个范围内启动,该范围在您的 Activity 或 fragment 被销毁时被取消。

关于android - 如何阻止 Coroutine CancellationException 导致 Activity 无法完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56297501/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com