0

我有一个正在 HTC one X 上测试的应用程序。

简要描述;简介:

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

Intent myIntent = new Intent(view.getContext(), NoteActivity.class);
startActivity(myIntent);

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

此外,当我从 mainactivity -> noteactivity 移动时,我的 mainactivity 永远不会被破坏,但是当我返回时(当用户完成笔记并单击“保存”时),noteactivity 总是会立即被破坏。

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

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

4

1 回答 1

0

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

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

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

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

生活在生命周期中。

于 2012-11-01T10:20:40.103 回答