文章

开发者选项中“不保存活动”按钮的含义

开发者选项中“不保存活动”按钮的含义

不保存活动 (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 进行授权