【问题标题】:Maintain the Persistence of Data in the Array List维护数组列表中数据的持久性
【发布时间】:2013-11-30 17:04:21
【问题描述】:

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

解析阶段(网络可用时,解析数据后):

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。 应用程序被终止时数据丢失

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

【问题讨论】:

  • 在应用程序终止前将数据序列化并在启动时加载?
  • @DylanMeeus 我有一个 ArrayList 我可以保存它吗?
  • @DylanMeeus 或者你能否给我一个示例,说明如何使用我的数组列表数据执行序列化,以便在应用程序被杀死后恢复时将其取回

标签: android


【解决方案1】:

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

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

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

如果您有Activity,您可以将数据保存在onDestroy() 调用中。

【讨论】:

  • 我有一个 ArrayList 我可以保存它吗?
  • @GauravArora 当然,您可以序列化对象并写入字符串。然后你读回字符串,并初始化对象。你可以在这里看到一组很好的例子 - stackoverflow.com/questions/16111496/…
猜你喜欢
  • 1970-01-01
  • 2021-09-21
  • 2015-12-23
  • 2011-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
相关资源
最近更新 更多