마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

뷰 변수의 선언 위치에 따른 영향?

0 추천
public class MainActivity extends AppCompatActivity {
    ImageView thumbUp;
    ImageView thumbDown;

    int[] images = {R.drawable.ic_thumb_up,R.drawable.ic_thumb_down,
            R.drawable.ic_thumb_up_selected, R.drawable.ic_thumb_down_selected};
    int selected = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        thumbUp = findViewById(R.id.thumb_up);
        thumbDown = findViewById(R.id.thumb_down);

        thumbUp.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int selected = 0;
                thumbUp.setImageResource(images[2]);
            }
        });

        thumbDown.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(selected == 0) {
                    thumbDown.setImageResource(images[3]);
                    selected = 1;
                }
                else if(selected == 1) {
                    thumbDown.setImageResource(images[1]);
                    selected = 0;
                }
            }
        });
    }
}

안녕하세요! 안드 공부중인 초보자입니다

다름이아니라 공부하다가 궁금해진것인데..( 코드내용은 무슨내용인지 자세히 안보셔두 됩니다! )

액티비티 파일(소스파일)을 만들면 onCreate()가 항상 있는데요..뭐 액티비티를 실행하면 onCreate()가 실행된다 뭐 이러면서 엄청 중요한 역할을 하잖아요? 설명이 맞는지 모르겠지만..

아무튼! 이 함수의 바깥..그러니까 클래스의 필드라고 할까요? 제가 코드에서 ImageView나

int[] 참조 변수를 선언한것처럼 onCreate()함수 바깥에다가 선언을 해주고 뷰의 이벤트 처리같은 아이디 불러오기나 이런것은 onCreate() 함수 내에서 진행 해줬는데요,

 

궁금한것이 영상보면 뷰의 선언이나 아이디 참조하기 등을 onCreate()함수 내에서 같이 진행하는 경우도 있더라구요.. 그래서 말인데 두개의 차이점이라던지..

혹은 뭐 더 지향해야한다 지양해야한다 이런것이 있을까요? 필드로 선언후 함수내에서 작업을하는게 좋을지! 아니면 함수내에서 함수의 지역변수로 선언하고 뭐 작업을 바로 하는게 좋을지!

이런것이 있을까요? 단순 스타일의 차이나 그런것일까요?

별거아닌 질문같지만..답변해주시면 감사하겠습니당

 

codeslave (3,940 포인트) 님이 2020년 8월 28일 질문

1개의 답변

0 추천
member 변수에 루틴은 해당 class instance가 생성되는 시점에 실행됩니다. (Java layer)

onCreate() 내 루틴은 Android app f/w에 의해 조금 나중에 호출됩니다. (Android layer)

 

onCreate()가 좀 더 늦게 호출되지만 Android 관련 초기화가 다 이루어진 다음에 호출되기 때문에

Android 관련 초기화 및 변수 세팅을 한다면, 이 시점이 더 안전합니다.
디자이너정 (42,810 포인트) 님이 2020년 8월 28일 답변
onCreate 내에서 변수를 선언하고 아이디참조하고 하는게 안전하다는 말씀이시죠?
근데 나중가서 크게 유의미한 차이가 있을정도인가요?
...