【发布时间】:2015-03-17 21:46:26
【问题描述】:
我正在运行三个AsyncTask() 每个AsyncTask 创建另一个类的对象。
这就是我从doInBackground() 创建一个类的实例的方式,
DOM domObject = new DOM;
现在,我的DOM 班级中有一个班级级别ArrayList,
public class DOM {
public static ArrayList<HashMap<String, Object>> tempNewsArray = new ArrayList<>();
我的主类运行三个AysncTask 对象,因此应该为每个AsyncTask 创建三个单独的DOM 类实例。
在每次执行AsyncTask 时,都会将一些数据添加到ArrayList。
例如,
首先执行AsynTask,
在ArrayList 中添加了一些数据。
第二个AsyncTask被执行,
ArrayList中添加的一些数据(以前的数据不应该在ArrayList中)
但问题是,DOM 类的前一个实例的数据仍然存在于 ArrayList 中,并且在另一个 AysnTask 实例创建 DOM 类的新实例时不会被删除。
为什么会这样?
例如,
DOM 类的第一个实例由第一个 Asynctask 创建,
ArrayList 中添加了一些数据。
DOM 类的第二个实例由第二个Asynctask 实例创建,
在ArrayList 中添加了一些新数据,但之前实例中的先前数据仍然存在。
为什么会这样?
【问题讨论】:
-
tempNewsArray是static,这意味着DOM的所有实例都使用相同的tempNewsArray -
但如果我这样做,
public static ArrayList<HashMap<String, Object>> tempNewsArray然后在另一个类似的方法中创建它的实例,new ArrayList<>();然后来自先前DOM实例的数据不存在。为什么自ArrayList以来的这种行为仍然是static。
标签: java android dom arraylist android-asynctask