android活动生命周期的困境

时间:2012-11-01 10:02:22

标签: android android-activity android-lifecycle

我有一个应用程序,我正在测试HTC X.

简要说明:

我的主要活动是标签式应用程序(使用片段)。在其中一个标签中,我有一个按钮,通过

将用户带到另一个活动
Intent myIntent = new Intent(view.getContext(), NoteActivity.class);
startActivity(myIntent);

这一切都很好。但是在NoteActivity中,我有一个文本字段,如果屏幕锁定打开,NoteActivity会立即被销毁,当用户解锁时,我的“Main”活动会立即启动。

此外,当我从主要活动中移开时 - > noteactivity,我的主要活动永远不会被破坏,但是当我回去时(当用户完成注释并点击“保存”)时,音符会立即被销毁。

显然,我需要将文本字段内容存储在ondestroy中并重新插入oncreate中,但我不明白为什么我的第二个活动总是在屏幕锁定激活时被销毁?我的主要活动永远不会被破坏。

我有点不确定Android为何会做出这些生命周期决定。如果有人有任何意见,我很乐意听到。

1 个答案:

答案 0 :(得分:0)

在许多平台/语言中,开发人员负责管理内存。这会导致许多错误和性能问题。 Android的设计者主要将这一责任从开发人员转移到操作系统中。当Android不在前台时,Android可以随时销毁您的任何活动。因此,在您的活动进入后台之前调用onPause()。

为什么Android会破坏你的活动是非决定性因素,取决于其他因素;设备有多少内存;多少内存是免费的;正在运行的其他应用程序和服务;什么内核管理器和节能策略正在使用等等,要使这个决定因素将是一个庞大而复杂的任务,所以设计只是说,一旦你的活动进入后台,Android可能会破坏它,有时没有进一步回调给你,所以你应该根据需要使用生命周期来保存和恢复状态。

一旦你习惯它,它实际上很有意义,并且易于使用。我来自Windows背景并习惯了它需要一些时间,但现在我知道它,它没关系。我不会说更好或更糟,但对移动设备来说是一个很好的解决方案。

桌面操作系统的习惯性思维最初导致我在应用程序中寻找任务管理器并执行诸如system.exit()之类的操作,但让Android自我管理并且性能要好得多。

与生命周期一起生活。

相关问题