我阅读了所有kotlinx UI 文档并实现了一个像那里描述的 ScopedActivity(见下面的代码)。
在我的 ScopedActivity 实现中,我还添加了一个 CouroutineExceptionHandler,尽管我将异常处理程序传递给了我的所有协程,但我的用户遇到了崩溃,我在堆栈跟踪中获得的唯一信息是“作业已取消”。
我现在搜索了几天,但我没有找到解决方案,我的用户仍然随机崩溃,但我不明白为什么......
这是我的 ScopedActivity 实现
abstract class ScopedActivity : BaseActivity(), CoroutineScope by MainScope() {
val errorHandler by lazy { CoroutineExceptionHandler { _, throwable -> onError(throwable) } }
open fun onError(e: Throwable? = null) {
e ?: return
Timber.i(e)
}
override fun onDestroy() {
super.onDestroy()
cancel()
}
}
Run Code Online (Sandbox Code Playgroud)
这是实施它的活动的示例:
class ManageBalanceActivity : ScopedActivity() {
@Inject
lateinit var viewModel: ManageBalanceViewModel
private var stateJob: Job? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_manage_balance) …Run Code Online (Sandbox Code Playgroud)