Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在onDestroy()中使用system.exit(0)(Android)_Android_Android Lifecycle - Fatal编程技术网

在onDestroy()中使用system.exit(0)(Android)

在onDestroy()中使用system.exit(0)(Android),android,android-lifecycle,Android,Android Lifecycle,我知道不建议在Android应用程序中使用system.exit(0),但我想知道在onDestroy()中使用它是否可以,因为此时允许终止应用程序 我问的原因是关于这个问题 您不应该调用sytem.exit(0),让android管理应用程序。如果我知道你有内存泄漏问题。我猜是因为位图。因此,请看一下这一点,以便高效地显示位图 如果在onDestroy()方法中调用system.exit(0),您将无法在横向和纵向之间切换。您可能最好查看以下选项: 不要依赖将调用的onDestroy。在某些

我知道不建议在Android应用程序中使用system.exit(0),但我想知道在onDestroy()中使用它是否可以,因为此时允许终止应用程序


我问的原因是关于这个问题

您不应该调用sytem.exit(0),让android管理应用程序。如果我知道你有内存泄漏问题。我猜是因为位图。因此,请看一下这一点,以便高效地显示位图


如果在onDestroy()方法中调用system.exit(0),您将无法在横向和纵向之间切换。

您可能最好查看以下选项:

  • 不要依赖将调用的
    onDestroy
    。在某些情况下,操作系统会在不调用您的
    ondestory
    的情况下终止您的应用程序
当然,这只是一个建议,因为它并不直接适用于您的场景。如果由于应用程序已被终止而未调用
system.exit(0)
,我会说您没事。;-)

  • 如果调用了
    Activity.ondestory
    ,则表示进程处于以下两种状态之一:
--应用程序中没有其他组件(
Service
ContentProvider
)运行在操作系统知道的范围内。这意味着您的进程很可能会立即被操作系统终止,或者如果系统的其他部分/其他应用程序需要物理内存,您的进程将是第一个被回收的进程。因此,调用
exit(0)
不会有多大效果

--在您的进程中运行着另一个组件,系统知道它。在这种情况下,调用
exit()
将终止进程,杀死其他组件并可能损坏数据。当然,操作系统可能不太在意,但您的用户可能不会欣赏它。:-)

  • 如果其他应用程序已耗尽其内部Dalvik堆限制,那么自愿终止进程将无助于它们。无论一个设备有多少物理内存,操作系统都对Dalvik在任何堆分配过程中允许使用多少内存有限制。因此,系统有可能有一半的空闲内存,而特定的应用程序仍在运行
Dalvik堆限制是OEM可配置的,尽管实际上很少有OEM会为他们的设备进行调整,只使用操作系统默认值。我不记得具体的默认设置,但可以安全地假设,在低端Froyo/Gingerbread手机上,每个应用程序的容量都在16MB到高端ICS/JB手机上的48MB之间。见鬼,我会很乐观,将上限提高到128MB(尽管我还没有听说过这样的设备)。:-)

  • 如果您的应用程序在内存使用方面存在问题(链接的问题暗示了这一点),并且您正试图通过在活动的下一次打开时强制执行“干净”的记录来解决问题,那么这种方法是可行的。有点但只要你的应用程序只使用活动,它就会一直有效。一旦你加入了
    内容提供者
    服务
    ,你就再也负担不起调用
    exit()
    (如上所述),你将被迫正确地解决问题。你不妨咬紧牙关,现在就做。最简单的方法是确保在完成特定位图时调用。当然,只要您不必在内存中保留比内存中更多的位图,这就行了,但无论如何,这是一个完全不同的野兽。:-)
捷径解决方案:调用finish()而不是System。使用完应用程序后,退出(0)活动

正确的方法是优化应用程序中位图的使用。看到这个了吗

我正在制作一款游戏,它总是处于风景之中,所以这不是一个大问题,但感谢您提出。