2013-01-14 62 views
8

在我的应用程序中,当我按主页按钮时,活动将转至onDestroy()。它假设只被称为onPause()方法正确吗?按下主页按钮时,生命力被破坏。

为什么会这样呢?

+0

你可以添加一些代码?如果你明确地命令onPause(或甚至onDestroy),那么你的问题将主要来自该区域。使用搜索功能。 –

+0

是否是您的活动的非历史属性?如果是这样,然后活动完成将被称为 – nandeesh

+4

看看这些答案:http://stackoverflow.com/a/14195833/779408 http://stackoverflow.com/a/14196279/779408也许你有同样的问题。转到设置 - >开发人员选项未选中不要保持活动和后台进程限制设置为标准限制。如果选中“不保留活动”,则活动状态不会保留,因此当您离开活动时,活动将被销毁。请享用! – breceivemail

回答

11

这取决于您的手机有多少内存,如果您的手机没有太多内存,那么它会破坏活动以立即释放资源。在新手机上,这不会发生,因为它们有足够的备用内存。

5

如果系统受到限制并且确定需要释放某些资源,则可以在按主页按钮时销毁活动。该documentation指出onDestroy()可以被称为如果:

发生这种情况是因为该活动结束(有人叫上完成(),或因为系统暂时销毁活动的这种情况下,以节省空间。您可以在这两种情景之间与isFinishing()方法还区分。

,千万注意,该系统可以kill你的程序,而无需调用onStop()onDestroy()被调用。因此,任何清理/数据持久化的代码应该是在onPause()或0123中。

0

那么,这取决于很多因素。如果你正面临着在Android 3.2+设备这个问题,你应该屏幕尺寸属性添加到Android:configChanges

android:configChanges="keyboardHidden|orientation|screenSize" 

此外,还添加机器人:launchMode =“singleTop”到你的发射活动。请注意,您需要使用Android SDK 15或更高版本作为目标,但是,您的应用也适用于较旧的设备。希望这可以帮助。

5

还要检查你不使用android:noHistory标志在您的清单中的活动

文档: 安卓noHistory 无论是否活动应该从活动组中删除,并完成(其完成()方法调用)当用户导航离开它,它不再可见屏幕上

相关问题