From 0974c38d76b34afcfab0e68a7830287566f7a384 Mon Sep 17 00:00:00 2001 From: fankesyooni Date: Tue, 4 Oct 2022 00:49:56 +0800 Subject: [PATCH] Fix destroyed Activity reading list data maybe out of bounds or called adapter's data confusion error in ConfigureActivity --- .../ui/activity/main/ConfigureActivity.kt | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/fankes/apperrorstracking/ui/activity/main/ConfigureActivity.kt b/app/src/main/java/com/fankes/apperrorstracking/ui/activity/main/ConfigureActivity.kt index 627f18f..7d01f6d 100644 --- a/app/src/main/java/com/fankes/apperrorstracking/ui/activity/main/ConfigureActivity.kt +++ b/app/src/main/java/com/fankes/apperrorstracking/ui/activity/main/ConfigureActivity.kt @@ -161,13 +161,18 @@ class ConfigureActivity : BaseActivity() { binding.listNoDataView.isVisible = false binding.titleCountText.text = LocaleString.loading FrameworkTool.fetchAppListData(context = this, appFilters) { - listData.clear() + /** 设置一个临时变量用于更新列表数据 */ + val tempsData = ArrayList() newThread { - it.takeIf { e -> e.isNotEmpty() }?.forEach { e -> - listData.add(e) - e.icon = appIconOf(e.packageName) + runCatching { + it.takeIf { e -> e.isNotEmpty() }?.forEach { e -> + tempsData.add(e) + e.icon = appIconOf(e.packageName) + } } - runOnUiThread { + if (isDestroyed.not()) runOnUiThread { + listData.clear() + listData.addAll(tempsData) onChanged?.invoke() binding.listView.post { binding.listView.setSelection(0) } binding.listProgressView.isVisible = false @@ -176,7 +181,7 @@ class ConfigureActivity : BaseActivity() { binding.listView.isVisible = listData.isNotEmpty() binding.listNoDataView.isVisible = listData.isEmpty() binding.titleCountText.text = LocaleString.resultCount(listData.size) - } + } else tempsData.clear() } } }