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

application 클래스에 선언된 변수는 모두 전역변수가 된다 ?

+1 추천

application 클래스에서 

static int a;
int b;
 
이런식으로 선언되있다고하면
 
a, b 모두 그냥 같은 전역 변수로 보면 되는건가요 ?
 
application 의 변수는 static 선언을 안해도 전역변수라고 하던데
 
사실인가요 ?
 
현재 앱에서  application 에 선언한 변수가 (static 선언하지 않음) 일정 시간이 지난후 앱을 리줌했을때
 
null 값이 들어가 있던데 전역변수라면 이런 현상이 발생해서는 안되는거 아닌가요 ?
 
혹시 원인을 아시는 분./.?
익명사용자 님이 2014년 4월 25일 질문

2개의 답변

+3 추천
정적변수(static)과 전역변수의 용어 개념을 혼동해서 알고계신데 관련 검색해보시고요,

덧붙여, 안드로이드는 Application 클래스에 선언한 static 변수도

백그라운드에 있다 올라오면 메모리에서 날아갈 수도 있으니

앱 실행되는 동안 항상 있다고 가정하고 코드를 작성하면 안됩니다.
b22n (22,940 포인트) 님이 2014년 4월 25일 답변
+1 추천
application 클래스란 것은 Activity를 상속한 클래스를 말하는건가요?

여튼 전역변수는 동일 클래스 내에서 어느 함수에서도 접근하여 사용할 수 있다는 뜻이고, 만약 함수 내에서 static을 사용하였을 경우에는 전역 변수와 동일하게 작동하는 것으로 다른 언어에서는 배운 기억이 나긴 하는데요. 그리고 static을 사용하는 이유는 전역변수를 위함이 아닌, 한 클래스를 여러개 생성하여도 여러 클래스 중 유일하게 값을 가지는 변수를 생성하기 위함이 아닌지요? 따라서 액티비티는 동일 클래스를 여러개 생성하지 않으므로 전역변수로 선언한 것이나 static을 선언하여 전역변수로 한 것이나 비슷하게 생각하셔도 될꺼 같습니다.

그리고 앱을 일정 시간이 지난후 앱을 리줌했다는 것은 앱을 실행하고 홈키를 누르고 다시 앱으로 돌아갔다는 것인지요?

안드로이드 시스템에 의해 종료되어 다시 실행되었을 경우도 생각을 해보셔야 할 것 같습니다. 각 생명주기별로 로그를 남기고 결과를 보면 더욱 알기 쉬울꺼 같네요.

아무튼 어떤 것이 정확하게 궁금한지 몰라서 주절주절 적었네요. 틀린 부분이 있다면 지적해주셨으면...^^; 제가 잘못 알고있는 것일수도 있으니...
인연 (31,880 포인트) 님이 2014년 4월 25일 답변
...