:안드로이드 응용 프로그램 수명주기 및 singelton이 패턴을 잘 우리의 가장 친숙한
public class MySingeltone {
public String mSomeReferenceTypeData;
public int mSomeValueTypeData;
private static MySingeltone mInstance;
private MySingeltone() {
}
public static MySingeltone getInstance() {
if (mInstance == null) {
mInstance = new MySingeltone();
}
return mInstance;
}
}
내 문제는 내가 mInstance 활동 후 같지 널 (null)을 수행하는 것이 최근에 발견 한 그 파괴 된 사용하거나 것입니다
public class SomeActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MySingeltone mySingeltone = MySingeltone.getInstance();
mySingeltone.mSomeReferenceTypeData = "some value";
}
}
활동을 실행하는 모든 응용 프로그램을 닫은 후 "SomeActivity"다음 번에 실행 (10 초 후에 말 ..)에 mInstance 여전히 함께, 동일한 참조를 보유 : 전체 응용 프로그램은 예를 들어, 절 것으로 가정 할 때 그의 분야에서 같은 가치.
왜 그런가요?
무엇이 누락 되었습니까?
안드로이드 가비지 수집 정적 멤버가 응용 프로그램에 속할 때?
여기서 싱글 톤이 동일한 인스턴스인지 확인합니다. –
@ Jazzy Josh : 새로운 것을 설정하기 전에 값을 얻는 것만으로 그것을 볼 수 있습니다.내 예제에서는 getInstance 메서드와 다음 줄 사이에있을 것입니다. 첫 번째 값은 null이 될 것이기 때문에 null과 같지 않은지 확인해야합니다. –
특히 응용 프로그램의 어디에 있는지 의미합니다. 활동이 결코 죽지 않는다면 onDestroy를 거치지 않고 onStop에서 onRestart와 onStart로 이동하여 살해 당할 것이며 귀하의 Singleton은 여전히 살아있을 것입니다. –