2014-02-06 4 views
4

나는 안드로이드 활동의 프로그램 흐름에 대해 혼란 스럽다. 자바에서는 메인 메소드가 먼저 실행되지만, 안드로이드에서는 onCreate 메소드가 먼저 호출되므로 클래스 수준에서 정의 된 변수는 무엇인가? onCreate가 먼저 호출된다고 말하면 액티비티가 실행을 시작할 때 어떻게 선언되고 초기화됩니까? 이러한 변수를 내부 클래스에서 초기화하고 내부 클래스 외부에서 값을 사용할 수 있습니까?자바 변수 선언

+0

내가 먼저 활동의 라이프 사이클을 확인해야한다고 생각! https://developer.android.com/training/basics/activity-lifecycle/index.html – Pavlos

+0

자동으로 생성 된 파일을 보았습니까? 'onCreate()'는 실행되는 코드의 첫 번째 라인이 아닙니다. – nhgrif

+0

안드로이드 어딘가에 본질적으로'main' 메소드가 있으며'new Activity()'하고'activity.onCreate (someContext)'를 호출합니다. 나머지는 표준 자바이며 클래스 초기화는 한 번 (즉 정적 변수), 인스턴스 초기화 (필드, 생성자, ..) – zapl

답변

5

실제로 OnCreate()은 말한대로 먼저 호출됩니다. >OnStart - - 활동이

OnCreate 같이 흐른다 활동이 사용자에게 표시되며,이 시점에서>OnResume

마찬가지로

활동

OnPause 끝나는 ->OnStop ->OnDestroy

질문에 대답하십시오. 클래스 수준의 변수는 이러한 메서드에 종속되지 않습니다. 왜냐하면 그 범위는 전체 활동 즉, OnStart에서 OnDestroy까지 일반적으로 Oncreate에서 초기화 할 수 있습니다. 다음 활동으로 이전 할 때 값을 변경하려면 OnResume에서해야합니다.

Lifecycle

당신은 나머지 모든 자유를해야합니다 다음과 같이 Activity 라이프 사이클은 당신이 자바처럼

0

일반적인 변수 초기화는 Android의 onCreate()에서 발생합니다. 변수에 Android Context이 필요하지 않은 경우 선언과 동일한 줄에서 초기화를 수행 할 수 있습니다.

내부 클래스 사용은 끈적 할 수 있습니다. 그들은 정말로 외부 수업의 상태를 바꾸면 안됩니다. 변수가 선언 된 동일한 클래스 내에서 변수를 초기화해야합니다.

0

클래스의 어느 위치에서 변수에 액세스하려면 해당 변수 클래스 이름 선언을 선언해야하며 변수 값 ...에 관한 클래스의 해당 위치에서 해당 변수를 초기화 할 수 있습니다. 샘플 윤곽 ...

class MainActivity extends Activity { 

    //Declare your variable here 

    @Override 
    protected void onCreateActivity(Bundle savedInstanceState) { 

     //Initialize your variable here 

    } 

}