如何保存应用程序类状态

时间:2015-08-18 18:24:11

标签: android nullpointerexception android-savedstate

我有一个扩展Application类的类这是My Application类

public class UILApplication extends Application {
public int count_group;
public LoginUserInfo loginUserInfo = new LoginUserInfo();
public  static ArrayList<PostCategory> featuredCategory = new ArrayList<PostCategory>();
public ItemsAllPost selectedPost;

public PostCategory selectedCategory;
public PostCategory selectedSubCategory;
public ArrayList<PostCategory> categoryList = new ArrayList<PostCategory>();
public ArrayList<PostCategory> searchCategoryList = new ArrayList<PostCategory>();
public ArrayList<PostCategory> timePeriod = new ArrayList<PostCategory>();
public ArrayList<PostCategory> tagsList = new ArrayList<PostCategory>();
public ArrayList<ItemsAllPost> featuredPost = new ArrayList<ItemsAllPost>();
public ArrayList<ItemsAllPost> searchList = new ArrayList<ItemsAllPost>();

}

我已经在其中保存了大量数据并在不同的活动和片段中使用它

现在的问题是当我按下主页按钮并在很长一段时间后回到应用程序时它会崩溃。

有人能告诉我如何在离开应用程序时保存这些数据,并在我重新申请时保留其状态。

请帮忙。

1 个答案:

答案 0 :(得分:2)

您通常不应将数据放入Application类。 Application实例的生命周期与大多数人假设的生命周期不同,您无法控制它。它的生命周期与VM的生命周期相同,但AFAIK没有记录,未来可能会在没有任何警告的情况下进行更改。

正如您所发现的,Application实例可能会在您的应用进入后台时被销毁。由于Application没有onSaveInstanceState(...)或其他关闭生命周期方法(如活动),因此不会收到通知。

当您的所有活动完成后,Application 也可能会被销毁。 Android可以保持流程和虚拟机,以及您的Application。如果发生这种情况,下次启动应用时,onCreate() 再次调用。