我有一个数组列表,其中包含我在互联网可用期间获取的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。 应用程序被杀时数据丢失
查询:即使应用程序被用户杀死,如何恢复数据?建议我做任何事情。
答案 0 :(得分:2)
从这个答案 - https://stackoverflow.com/a/19335539/816416 - 很明显,当应用程序从任务管理器中被杀死或被系统本身杀死时,不会调用任何事件。
因此,更好的方法是在获取数据时保存数据。无论您的应用是否被杀,这都将确保您的数据安全无虞。下次登录时,您可以加载保存的数据。
要存储数据,您可以使用以下内容:
如果您有Activity
,则可以将数据保存在onDestroy()
来电中。