A액티비티에서 온클릭리스너로 ArrayList에 특정 값을 부여함.
다른 버튼으로 B액티비티로 이동(intent)
B액티비티에서 버튼으로 다시 A액티비티로 이동(intent)
이때 값이 사라져버리는데 ArrayList의 데이터를 계속 유지시키는 방법이 있을까요???
파일입출력을 해야하나요?
다시 A 액티비티로 이동하실때 finish()(뒤로가기)가 아니라 스택을 정리하시는거겠죠?
A->B : 인텐트 호출
B->A : finish(); 라면 A 액티비티 데이터는 유지
A->B : 인텐트 호출
B->A : 액티비티 스택 정리 라면 A 액티비티 onCreate()호출이므로 파일 입출력으로 하셔야겠네요 ㅎ
static 으로 설정하시면 될 것 같은데요.
모든 Activity 는 Thread 이고, Thread 안의 static 값들은 항상 유지되니까요.
하지만,.. ArrayList 를 static 으로 선언하실 때,. 주의할 점은.. clear 해줄 시점을 분명히 하지 않으면,
지속적으로,.. Array 에 쌓여버려서,.. 일종의 메모리 릭이 될 수 있습니다.
홍삼먹고웩님처럼 전역 스태틱 변수로 하시던가
아니면 어플리케이션 클래스를 상속받은 클래스내에 변수를 선언하면 된다고하더군요 <-- 이방법은 해본적없고 홍삼님이말한것처럼은 해봐네여
건방진프로그래머님 말씀대로 Application 클래스를 상속받은 이용하는 방법이 있다고 합니다
거기다가 변수를 선언해놓고 그 변수에 대한 setter/getter를 선언해놓으면 접근할 수 있을거에요
Application 클래스를 상속받은 클래스가 AppClass 라고 한다면
객체를 얻어올 때는 AppClass AC = (AppClass) getApplicationContext();
AC.setX(), AC.getX()
이런식으로 사용할 수 있을거에요
스태틱변수를 액티비티에 두는건 위험합니다.
액티비티는 독립 단위로 처리되고 시스템에 의해서 언제든지 해제될 수 있으니깐요...
B로 간 상태에서 홈키누르고 나와서 이것저것 겜같은거 하다가 다시 B로 오면...
그 이전에 실행중이던 A는 메모리 해제 되버릴 수 있다는 소립니다...
객체지향 관점에서도 맞지 않구요 ㅜㅜ
데이터베이스를 중계하거나, 매니저 클래스를 두고 같이 이용하는게 옳아보입니다.
예를 들어 Person 데이터를 취급한다면 PersonManager클래스를 두고 set, get 하면서
A, B액티비티가 둘다 함께 사용하는 겁니다.
각자 만들어서 쓰면 공유가 안되니 싱글톤으로 해야겠죠...
이게 맞는방법인지는 모르겠는데요,
제가 보통 모든 액티비티에서 쓰이는 전역변수를 쓸땐 따로 클래스를 만들고 public static 로 정의를해서 사용합니다.
열심히~