1

我有一个充满活力的银河。不久前我在上面安装了 ICS rom。我注意到我以前在 2.2 上使用的视频捕获程序现在在我捕获视频时突然退出而没有通知。然后我继续了解到 ICS 使用大量内存。

我现在正在开发一个通过服务意图创建对象数组的应用程序。该服务是一种粘性服务。因此,据我了解,它会尽可能长时间地存在。在我的 onDestroy 方法中,我将我的对象数组序列化为一个文件,以便当我的服务再次启动时,加载该数组(如果文件存在)。所以我测试了我的应用程序,一切运行良好,然后我退出了活动(意图仍应在后台运行)。然后我运行 ICS 互联网浏览器并从我的应用程序中获得强制关闭。

我的系统是否有可能杀死我的服务并且永远不会调用 ondestroy?

4

3 回答 3

0

与活动一样,onDestroy 方法在服务即将终止时被调用。当没有更多的客户端启动或绑定到它时,Android 将终止服务。与活动一样,Android 也可能在内存不足时终止服务。如果发生这种情况,Android 将在内存压力过去时尝试重新启动服务,因此如果您的服务需要为重新启动存储持久信息,最好在 onStart 方法中这样做。

Could it be because of low ram?

正如我之前提到的,是的。

来源OReilly.Android.Application.Development

于 2012-05-29T07:32:19.660 回答
-1

使用onLowMemory()服务的方法。http://developer.android.com/reference/android/app/Service.html#onLowMemory%28%29

于 2012-08-16T13:32:09.840 回答
-2

当您的程序即将关闭时,您应该调用 yourActivity.finish(),它会调用 onDestroy()。

当 Android 系统完成应用程序时,并不总是调用 onDestroy。

于 2012-05-29T07:29:31.973 回答