안녕하세요,
non-static변수
private variable에 대하여 질문을 올리고자 합니다.
우선 큰 그림으로는
부모 Activity인 A가 자식 Activity인 B를 호출합니다.
B의 구성은 대충
public class B extends Activity {
private boolean variable;
private CClass cObject;
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstaceState);
Log.e("asdf", "" + variable);
...
cObject = savedInstaceState != null? (CClass) getLastNonConfigurationInstance() : new CClass() {
CClass.onTouchEvent(MotionEvent event) {
Log.e("asdf", "" + variable);
}
};
}
public Object onRetainNonConfigurationInstance() {
CClass tempCObject = cObject;
this.cObject = null;
return tempCObject;
}
....
}
로 되어있습니다.
처음 B Activity 실행 시 Log에는 false가 찍힙니다.
이후 여러 동작을 통해 variable은 true혹은 false로 바뀌게 되는데,
이때에는 cObject.onTouchEvent()의 Log에서는 현재 variable값에 적용된 값이 찍힙니다.
가장 마지막으로 variable을 true로 저장 후,
화면 회전시 onCreate()에서 호출된 Log를 보면 false로 찍힙니다.
이후부터는 cObject.onTouchEvent()의 Log에서는 현재 variable과는 다른 false값만이 찍힙니다.
(이전 변수를 가져온 cObject외에 다른 함수에서 Log시에는 현재 variable값이 찍힙니다.)
(하지만, 회전 이전과 이후의 System.identityHashCode(vriable)의 값을 동일 하더라구요...)
이러한 상황을
private boolean variable; 가 아닌
private static boolean variable; 로 선언하면 발생하지 않습니다.
=======================
화면 회전시 해당 클레스에서 private로 선언한 변수를 재생성하지 않고 전달받아 계속 사용하는 방법이 따로 있는 것 입니까?
긴 글 읽어주셔서 감사합니다.