Android Kotlin / Java-注销:清除共享首选项并在后台停止所有进程

时间:2019-01-06 02:40:04

标签: java android kotlin

清除所有共享的首选项并将用户转到主要活动之后:

            this.getSharedPreferences("userData", 0).edit().clear().apply()


            finishAffinity()
            startActivity(Intent(this, MainActivity::class.java))

该应用程序崩溃,因为在后台仍存在与首选项相关的几个任务/计时器。在我将用户转到主要活动之前,您怎么能完成所有事情?

我尝试过:

            val intent = Intent(Intent.ACTION_MAIN)
            intent.addCategory(Intent.CATEGORY_HOME)
            startActivity(intent)

但是它只是将应用程序置于后台,在我将其恢复到前台后便崩溃了。有什么解决方案可以仅停止所有操作并开始特定活动,而无需一个接一个地完成所有后台任务吗?

2 个答案:

答案 0 :(得分:1)

您可以尝试使用commit()而不是apply()来获取是否成功清除所有数据的返回值!

这里是docs

答案 1 :(得分:0)

getSharedPreferences("userData", MODE_PRIVATE)
            .edit()
            .clear()
            .apply()

        val intent = Intent(this, MainActivity::class.java)
        startActivity(intent)
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
            finishAffinity()
        }

在保存数据时,请确保“ useData”相同。