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

Android 维护数组列表中数据的持久性,android,Android,我有一个数组列表,其中有100条记录,是我在互联网可用期间获取的。当internet不可用时,我将从应用程序类实例获取它。以下是我的方法: 在解析步骤(当互联网可用时,解析数据后): BApplication.bAppSession.setFindBData(findBDataList); public class BApplication extends Application { public static BAppSession bAppSession; @Overri

我有一个数组列表,其中有100条记录,是我在互联网可用期间获取的。当internet不可用时,我将从应用程序类实例获取它。以下是我的方法:

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

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;
    }
}
这是应用程序类:

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;
    }
}
这是我的课程:

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;
    }
}
公共类BAppSession{
私人语境;
私有ArrayList findMyBeerDataLast=新ArrayList();
公共啤酒节(上下文){
this.context=上下文;
}
public void setFindMyBeerData(ArrayList findMyBeerDataList){
this.findMyBeerDataLast=findMyBeerDataList;
}
公共ArrayList getFindMyBeerData(){
返回this.findMyBeerDataLast;
}
}
如何获取数据(脱机):

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()

问题:一切正常,但问题是当我从任务管理器中关闭应用程序并重新启动(当internet不可用时),我得到的ArrayList为空应用程序关闭时数据丢失

查询:即使应用程序被用户杀死,如何取回数据?建议我做同样的事情。

从这个答案来看——很明显,当应用程序从任务管理器或系统本身终止时,不会调用任何事件

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

对于存储数据,可以使用以下方法:

  • 数据库SQLite:
  • 档案
  • 共享引用

如果您有一个
活动
,您可以将数据保存在
onDestroy()中
call.

s在应用程序终止之前对数据进行序列化,并在启动时加载数据?@DylanMeeus我有一个ArrayList可以保存它吗?@DylanMeeus或者你可以给我一个示例,说明如何对我的ArrayList数据执行序列化,以便在应用程序关闭后恢复时重新获取它吗?我有一个ArrayList可以吗是否保存?@GauravArora当然,您可以序列化对象并将其作为字符串写入。然后读回字符串,并初始化对象。你可以在这里看到一组很好的例子-