创建类的新实例时,不会销毁我的ArrayList数据

时间:2015-01-19 19:35:03

标签: java android dom arraylist android-asynctask

我正在运行三个AsyncTask() AsyncTask创建另一个类的对象。

这是我从doInBackground()创建一个类的实例,

        DOM domObject = new DOM;

现在,我的ArrayList班级中有一个班级DOM

public class DOM {
    public static ArrayList<HashMap<String, Object>> tempNewsArray = new ArrayList<>();

我的主要类运行三个AysncTask对象,因此应为每个DOM创建三个单独的AsyncTask类实例。

每次执行AsyncTask时,都会将一些数据添加到ArrayList

实施例, 第一个AsynTask已执行,    在ArrayList中添加了一些数据。 第二个AsyncTask已执行,    ArrayList中添加了一些数据(以前的数据不应该出现在ArrayList

但问题是,来自DOM类的前一个实例的数据仍然存在于ArrayList中,并且当DOM类的新实例由另一个AysnTask类创建时未被删除1}} instace。

为什么会这样?

实施例, 第一个DOM创建的Asynctask类的第一个实例, 一些数据添加在ArrayList中。

DOM类的第二个实例由第二个Asynctask实例创建, ArrayList中添加了一些新数据,但之前实例中的先前数据仍然存在。

为什么会这样?

1 个答案:

答案 0 :(得分:2)

tempNewsArray是静态的,因此所有Dom个数据共享该成员的单个副本,初始化Dom类时,该副本仅初始化一次。

如果希望每个Dom实例都有自己的ArrayList成员,请将其声明更改为:

public ArrayList<HashMap<String, Object>> tempNewsArray = new ArrayList<>();