-2

可能重复:
Android Activity 中的变量状态

如果 android OS 由于内存不足而杀死了我的应用程序(使用 service ),那么它将尝试再次运行它。来自 android.developers 网站:

**请注意,这意味着您的服务大部分时间都在运行,如果内存压力过大,它可能会被系统杀死。如果发生这种情况,系统稍后会尝试重新启动服务。**

如果我在我的主要活动代码中有这样的:

public static MainActivity mainAct;
protected void onCreate(Bundle savedInstanceState) 
{mainAct = this;}

当 android OS 杀死我的 mainAct 应用程序值时,它会丢失,因为它仅在活动中初始化 onCreate() 而不是在服务中。

如何“保存”该对象,以便在我的应用程序因内存不足而被终止时保留价值?

4

2 回答 2

0

public static MainActivity mainAct会导致内存泄漏问题,比如经常改变方向。当前的activity实例不能被gc收集到,因为mainAct有它的refrence。

于 2013-01-29T01:50:33.690 回答
0

您可以在服务中实现 onDestroy() 方法,以将某些应用程序状态持久保存到设备。因此,当调用服务 onStartCommand() 方法时,您可以检查您的持久状态(如果存在)并从该点再次启动您的应用程序。

例如,如果您有一个从不同来源提取文章的新闻提要应用程序,您可以在开始下载之前将您的状态写入文件中,例如:

download=irishtimes-31_01_2013

因此,如果您的应用程序由于有人拔出电池而完全失败,那么您就有了一个可以恢复的已知状态。同样,如果 Andoid 调用您的 onDestroy() 方法来终止您的服务,您可以以相同的方式将状态保存到设备。然后,当您的服务重新启动时,您将拥有可以从文件中读取并加载到“对象”中以再次使用的状态。

您不仅限于文件。正如@wtstang02 提到的,您还可以使用数据库。

于 2013-01-29T01:21:57.990 回答