我正在运行三个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
中添加了一些新数据,但之前实例中的先前数据仍然存在。
为什么会这样?
答案 0 :(得分:2)
tempNewsArray
是静态的,因此所有Dom
个数据共享该成员的单个副本,初始化Dom
类时,该副本仅初始化一次。
如果希望每个Dom
实例都有自己的ArrayList成员,请将其声明更改为:
public ArrayList<HashMap<String, Object>> tempNewsArray = new ArrayList<>();