2012-10-02 4 views
1

빠른 질문이지만 설명서에 대한 답변을 찾을 수 없습니다.Android의 정적 필드 수명

Android 앱에서 정적 필드의 수명은 어떻게됩니까? 언제 초기화되며 언제 파괴됩니까? 최종 속성이 라이프 사이클을 수정합니까? 민간/공공은 어떻습니까? Application 인스턴스가 살아있는 한 그들은 살고 있습니까? 또한 어떤 정적 사전에 대한 :

public class DemoClass { 
    static int one = 1; 
    static int three = DemoActivity.two + one; 
} 

public class DemoActivity extends Activity { 
    public static int two = DemoClass.one + DemoClass.one; 
    private static final int four; 
    public static int five; 

    public void onCreate(Bundle b) { 
      four = two + two; 
      five = DemoClass.three + DemoClass.one + DemoClass.one; 

    } 

} 

편집 :

두 개의 인스턴스를 가지고? 예를 들어

,

public class AnotherDemoActivity extends Activity { 
public static ArrayList<String> strings = new ArrayList<String>(); 

@Override public void onCreate(Bundle b) { 
    strings.add("test"); 
    strings.add(new String("another test"); 
    strings.add(new DemoClass()); 
} 

은 "문자열"요소는 얼마나 오래 살 것인가?

답변

1
  • static 범위는 클래스가 배포 해제 될 때까지입니다. 시작시 (로드 직후)에 시작되는 것은
    입니다.
    final 속성은 위의 동작을 수정하지 않습니다.
+0

"클래스가 해제 배포까지 정적 범위는." 그게 무슨 뜻 이죠? 그 클래스를 인스턴스화하지 않으면 어떻게 될까요? – StackOverflowed

+0

정적 변수에 액세스하기 위해 클래스를 인스턴스화 할 필요가 없습니다. 인스턴스 범위가 아니며 클래스 범위입니다. – kosa

5

언제 초기화되며 언제 파괴됩니까?

선언하는 클래스가로드 될 때 초기화되며 응용 프로그램 프로세스가 끝날 때까지 유지됩니다.

최종 특성이 수명주기를 수정합니까?

없음

어떤 개인에 대한 공개 /? 아니

은 한 응용 프로그램 인스턴스가 살아으로 살고 있습니까?

+0

Application 클래스가 모든 클래스를로드합니까? DemoClass가 언제로드됩니까? 그것이 중요한 경우 자체 파일에 선언 된 공용 클래스라고 가정합니다. – StackOverflowed

+1

나는 자바 클래스 로더와 동일한 것으로 믿고 클래스가로드 될 때 클래스를로드 할 때 DemoActivity와 같은 참조 클래스가로드 될 때 DemoClass가로드된다. –

+0

나는 또한 그렇게 할 수있다. 그것을 지원하는 문서를 찾지 못하는 것 같습니다! :) – StackOverflowed