Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android中保存活动停止/暂停时的对象列表_Android - Fatal编程技术网

如何在android中保存活动停止/暂停时的对象列表

如何在android中保存活动停止/暂停时的对象列表,android,Android,最近写了一些应用程序,我被一个问题阻止了 在这个应用程序中,我有两个活动:A和B。在活动A中,每次GPS坐标发生变化时,我都从web下载对象列表。对于此活动,有带GPS和Internet连接呼叫的连接绑定服务。然后,这些对象被放入根据其名称创建的列表中,在按下任何一个按钮后,我可以打开传递此对象的B活动,并在活动B中从该对象获取更多信息 活动B没有任何绑定服务,它只获取对象内部的内容并显示它 因为活动A中的绑定服务在onStop中未绑定,所以当我使用返回箭头返回时,需要一段时间才能再次下载所有内

最近写了一些应用程序,我被一个问题阻止了

在这个应用程序中,我有两个活动:A和B。在活动A中,每次GPS坐标发生变化时,我都从web下载对象列表。对于此活动,有带GPS和Internet连接呼叫的连接绑定服务。然后,这些对象被放入根据其名称创建的列表中,在按下任何一个按钮后,我可以打开传递此对象的B活动,并在活动B中从该对象获取更多信息

活动B没有任何绑定服务,它只获取对象内部的内容并显示它

因为活动A中的绑定服务在onStop中未绑定,所以当我使用返回箭头返回时,需要一段时间才能再次下载所有内容。更有趣的是,列表仍然是满的,但这些只是名称,实际的对象列表并不存在,在返回任何名称后按将导致OutOfBoundException

所以,我的问题是,在下载新的(或相同的)列表之前,您建议我在活动A中保存这些对象,并在回来时检索它们

我试过:

  • onRestoreInstanceState()
    onSaveInstanceState()
    ,因为您可以在那里保存包裹列表,但活动A不会很快被销毁,因此不需要调用
    onRestoreInstanceState()
  • 共享首选项
    ,但这是一个糟糕的选择,因为您无法将列表保存在那里
  • ContentValues
    contentresolvers
    但也有一个错误的选择,因为您无法保存列表
你还有什么想法,怎么做


哦,我忘了提到,<强>我假设列表中可以有100个对象,每个对象有5个字段。

>P>如果不使用SyrdPosivor和Cordon值是因为它不能处理列表,那么你可以考虑将你的列表序列化为JSON之类的东西,将其另存为字符串,并在加载时将其映射回对象。例如,转换对象JSON通常需要两行代码。

您需要将下载的数据缓存在类似于此处的单例类中

类数据控制器 {

公共静态数组列表aa

}


下载数据时填写此arraylist,并在活动中检查此列表是否为空,然后仅使用此arraylist而不是下载它。对singleton类的概念进行更多的研究,我相信你会学到一些对你非常有用的东西。

创建一个singleton类,将对象存储在HashMap或ArrayList(适合你的)中,并在其他活动中访问该列表

import java.util.ArrayList;

public class DataHandler {
    private static DataHandler handler;
    private ArrayList<Object> list;

    private DataHandler() {
    }

    public static DataHandler getInstance() {
        if (handler == null)
            handler = new DataHandler();
        return handler;
    }

    public ArrayList<Object> getList() {
        return list;
    }

    public void setList(ArrayList<Object> list) {
        this.list = list;
    }
}
import java.util.ArrayList;
公共类数据处理程序{
私有静态数据处理程序;
私有数组列表;
私有数据处理程序(){
}
公共静态DataHandler getInstance(){
if(handler==null)
handler=newdatahandler();
返回处理程序;
}
公共ArrayList getList(){
退货清单;
}
公共无效集合列表(ArrayList列表){
this.list=列表;
}
}