AsyncTask()
각 세 개를 실행 중입니다. 다른 클래스의 개체를 만듭니다. 이것은 내가 doInBackground()
에서 클래스의 인스턴스를 생성하고 어떻게클래스의 새 인스턴스를 만들 때 내 ArrayList 데이터가 소멸되지 않습니다.
지금
DOM domObject = new DOM;
는 내 DOM
클래스
public class DOM {
public static ArrayList<HashMap<String, Object>> tempNewsArray = new ArrayList<>();
내 주요 클래스 실행 세 AysncTask
클래스 수준 ArrayList
을가 객체이므로 AsyncTask
각각에 대해 DOM
클래스의 세 인스턴스가 만들어 져야합니다.
AsyncTask
을 실행할 때마다 데이터가 ArrayList
에 추가됩니다.
예 : 처음으로 AsynTask
실행 됨, 일부 데이터는 ArrayList
에 추가되었습니다. 는 AsyncTask
실행 둘째, 일부 데이터 (이전 데이터 ArrayList
거기 안)
ArrayList
에 추가 그러나 문제는 DOM
클래스의 이전 인스턴스에서 데이터가 ArrayList
거기에 아직 제거되지, 때 새로운 DOM
클래스의 인스턴스는 또 다른 AysnTask
instace에 의해 생성됩니다.
왜 이런 일이 발생합니까?
예는 제 Asynctask
의해 생성 DOM
클래스 첫번째 인스턴스는 일부 데이터 ArrayList를 첨가한다.
두 번째 인스턴스 DOM
클래스의이 두 번째 Asynctask
인스턴스에 의해 생성되고, 일부 새로운 데이터가 ArrayList
에 추가되지만 이전 인스턴스에서 이전 데이터가 아직도있다.
왜 그렇습니까?
DOM''의 모든 인스턴스가 같은'tempNewsArray를 사용하는 것이 의미하는'tempNewsArray'은'static' ' – Titus
하지만 이걸 좋아한다면'public static ArrayList> tempNewsArray' 그리고'new ArrayList <>();와 같은 다른 메소드 안에 인스턴스를 생성하면 이전의 데이터 DOM 인스턴스가 없습니다. 왜'ArrayList'가 여전히'정적 인 '이래로이 행동을합니다. –
Joe