상황 :
안드로이드 응용 프로그램의 주요 활동을 종료 할 때 반환 할 때, 나는 배열이 이미 채워지지 않도록 (배열에 그들에게 데이터를 삭제하기 위해 를 액티비티의 생활 인스턴스의 메소드를 호출 할 앱에). OtherActivity.java에서 MainActivity.java
현재 활동중인 인스턴스가 있는지 여부를 확인하는 방법은 무엇입니까?
// ...
@Override
public void onDestroy() {
super.onDestroy();
// call method to clear an array list of its data
// NullPointerException here if OtherActivity has no current living instance
OtherActivity.clearAllData();
}
에서
// ...
private static ArrayList <String> myStringCollection;
// ...
public static void clearAllData(){
if(myStringCollection.size() > 0){
myStringCollection.clear();
Log.d(TAG, "clearing data in OtherActivity");
}
}
질문 : 우리가 OtherActivity가 현재 살고있는 인스턴스를 너무 가지고 있는지 어떻게 알 수
우리가 안전 할 수 있다고 OtherActivity.clearAllData()에 대한 호출?
응용 프로그램을 종료하고 복귀 후 일부 ArrayLists 여전히 그들의 오래된 데이터를 가지고, 그 결과 새로운 데이터 (중복)가 위에 쌓인됩니다 : 코드가해야 할 시도 무엇
. 이 코드는 주 활동의 onDestroy()에있는 ArrayLists에서 데이터를 지우려고하므로 나중에 앱으로 돌아갈 때 이전 데이터가 없어집니다.
피드백에 감사드립니다. 나는 그것을 시도 할 것이다. 클래스 메서드를 사용하여 다른 활동의 메서드를 호출하고 데이터를 앞뒤로 전달합니다 (아마도 가장 좋은 방법은 아니지만 ...) – sean
업데이트 : NullPointerException이 중지되었지만 이후에 배열 데이터를 지우는 데 실패했습니다. app quit .. 문제는 질문의 범위에서 벗어나고 있으므로 답변을 수락하고 접근 방식을 다시 생각해 보겠습니다. 다시 한번 감사드립니다. – sean
나는'SharedPreferences'를 살펴볼 것입니다. 클래스간에 데이터를 전달하는 쉬운 방법입니다. 또한,'Intents'에'Extras'를 추가하는 것은 데이터가 영속적이지 않기를 원할 때 정말 도움이 될 수 있습니다. – Grimmace