维护数组列表中的数据持久性

时间:2013-11-17 15:45:37

标签: android

我有一个数组列表,其中包含我在互联网可用期间获取的100条记录的列表。当互联网不可用时,我从Application Class实例获取它。这是我如何做的方法:

在解析步骤(互联网可用时,解析数据后):

BApplication.bAppSession.setFindBData(findBDataList);

以下是应用类:

public class BApplication extends Application {
    public static BAppSession bAppSession;

    @Override
    public void onCreate() {
        bAppSession = new BAppSession(getApplicationContext());
    }
}

这是我的会话类:

public class BAppSession {

    private Context context;

    private ArrayList<FindMyBeerData> findMyBeerDataLast = new ArrayList<FindMyBeerData>();
    public BeerAppSession(Context context) {
        this.context = context;
    }

    public void setFindMyBeerData(ArrayList<FindMyBeerData> findMyBeerDataList){
        this.findMyBeerDataLast = findMyBeerDataList;
    }

    public ArrayList<FindMyBeerData> getFindMyBeerData(){
        return this.findMyBeerDataLast;
    }
}

如何获取数据(离线):

findMyBDataList = BApplication.bAppSession                         .getFindMyBeerData();

问题:一切正常,但问题是当我从任务管理器中杀死应用程序并重新启动时(当互联网不可用时),我得到空的ArrayList。 应用程序被杀时数据丢失

查询:即使应用程序被用户杀死,如何恢复数据?建议我做任何事情。

1 个答案:

答案 0 :(得分:2)

从这个答案 - https://stackoverflow.com/a/19335539/816416 - 很明显,当应用程序从任务管理器中被杀死或被系统本身杀死时,不会调用任何事件。

因此,更好的方法是在获取数据时保存数据。无论您的应用是否被杀,这都将确保您的数据安全无虞。下次登录时,您可以加载保存的数据。

要存储数据,您可以使用以下内容:

如果您有Activity,则可以将数据保存在onDestroy()来电中。