2016-09-16 40 views
1

我有一个活动,我认为这是一项关键操作(通过蓝牙与另一台计算机进行特定通信),并且我希望让用户离开时该活动,它不能恢复到该状态。换句话说,如果用户恢复活动,应该重新创建活动。如何在用户离开后正确完成(重置)活动

由于此活动使用蓝牙可能开始为结果(Enable-Bluetooth activityRequest-Permissions activity)一个或两个活动,因此,我不能简单地finish()onPause()活动。

通过保留活动,我的意思是按下主页按钮,需要一个电话或按下按钮多任务

我有一些活动启动模式(如singleTask)没有成功尝试。

我已经打电话super.onCreate(null)在活动的onCreate()方法,防止其重新创建它已被摧毁之后的特定状态,但我想重置活动onDestroy()是否已被称为与否。

有没有人有任何建议,应如何正确完成?

编辑:

在可能的复制问题介绍了如何退出应用程序,它完全是子任务(而只是finish()会适合我的需要 - 如果我知道在哪里可以称呼它)。这个问题是关于找到一个干净的方式来恢复以前的活动状态。

+0

可能重复[如何以编程方式退出android应用程序](http://stackoverflow.com/questions/6330200/how-to-quit-android-application-programmatically) –

+0

建议:不要依赖'onDestroy() '为您的逻辑或保存任何数据。如果操作系统受到压力并且其他许多应用程序正在运行,则可能不会调用“onDestroy()”。看到这个:https://developer.android.com/reference/android/app/Activity.html#onDestroy() –

+0

@ th3pat3l我甚至没有在我的应用程序中实现'onDestroy'。 – Joakim

回答

1

如果您通过主页按钮退出状态或者甚至关闭屏幕时都不希望状态持续存在,最简单的方法是使用可用的生命周期事件。这比通过强制关闭应用程序等方式解决Android设计变得简单得多。

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

相关问题