保存对象供以后使用,如果我的应用程序被杀死

时间:2013-01-29 00:51:15

标签: java android object serialization

  

可能重复:
  State of variables inside an Android activity

如果由于内存不足导致Android操作系统杀死我的应用程序(使用服务),那么它将尝试再次运行它。来自android.developers网站:

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

如果我的主要活动代码如下:

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

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

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

2 个答案:

答案 0 :(得分:0)

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

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

download=irishtimes-31_01_2013

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

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

答案 1 :(得分:0)

public static MainActivity mainAct会导致内存泄漏问题,例如方向更改频繁。当前活动实例无法通过gc收集,因为mainAct有其参考。

相关问题