如何在用户离开活动时正确完成(重置)活动

时间:2016-09-16 14:04:41

标签: android android-activity android-lifecycle

我有一个活动,我认为这是一个关键操作(通过蓝牙与另一台计算机进行特定通信),我想这样做,以便当用户离开活动时,它无法恢复到该状态。换句话说,如果用户恢复活动,则应重新创建活动。

由于此活动使用蓝牙,因此可能会针对结果(Enable-Bluetooth activityRequest-Permissions activity)开始一两项活动,因此,我不能只是finish()活动在onPause()

离开活动,我的意思是按下主页按钮,接听电话或按多功能按钮

我已经尝试了一些Activity Launch模式(比如singleTask)但没有成功。

我已经在Activity的super.onCreate(null)方法中调用了onCreate(),阻止它在被销毁后重新创建到特定的状态,但我想重置活动是否{{1已经被调用过了。

有没有人对如何正确完成这项工作有任何建议?

编辑:

可能重复中的问题解释了如何完全退出应用程序及其子任务(而onDestroy()只能完全满足我的需求 - 如果我知道在哪里调用它)。这个问题是关于找到一种简洁的方法来不恢复活动的先前状态。

1 个答案:

答案 0 :(得分:1)

如果您不希望状态在您通过主页按钮离开后仍然存在,或者甚至在屏幕关闭时仍然存在,最简单的方法是使用可用的生命周期事件。通过强制关闭应用程序等方式尝试解决Androids设计,这简单得多。

由于每次有人返回应用程序时都需要设置所有内容,因此您可以将所有设置逻辑移出onCreate并进入onResume。然后,在onPause中执行所有必需的清理(终止BT连接等)。唯一可能的问题与更改屏幕旋转/打开键盘等事情有关,这可能触发您不想要的生命周期事件。如果你在onResume上的UI线程上有很多长时间运行的任务,这可能会使你的程序响应性降低。