开发者选项中“不保存活动”按钮的含义
开发者选项中“不保存活动”按钮的含义
不保存活动 (Don’t keep activities) 开启后处理
开发者选项中 “ 不保存活动 “ 按钮的含义
- 当从 Activity A -> Activity B 时,A 会销毁,当从 B 退回到 A 时,A 回重新加载,不会回到退出时的状态。
- 当从应用返回到桌面时,该应用不会保留在后台,而是从内存中直接清除,再次打开不会回到退出时的状态。
由于某些用户打开了这个按钮,会导致 app 的跳转逻辑和 fragment 加载出问题,而导致崩溃。在 app 设计时,处理这个问题刻不容缓。
解决方案
京东的解决方案
当发现用户打开了 “ 不保留活动 “ 按钮,弹出提示框,建议用户关闭。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
fun Activity.showDotKeepActivitiesWarningDialog() {
val alwaysFinish: Int =
Settings.Global.getInt(contentResolver, Settings.Global.ALWAYS_FINISH_ACTIVITIES, 0)
if (alwaysFinish == 1) {
var dialog: Dialog? = null
dialog = AlertDialog.Builder(this)
.setMessage(
"由于您已开启'不保留活动',导致部分功能无法正常使用.我们建议您点击左下方'设置'按钮,在'开发者选项'中关闭'不保留活动'功能."
)
.setNegativeButton(
"取消"
) { dialog, _ -> dialog.dismiss() }
.setPositiveButton(
"设置"
) { _, _ ->
val intent = Intent(
Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS
)
startActivity(intent)
}.create()
dialog.show()
}
}
本文由作者按照 CC BY 4.0 进行授权