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

변수선언방법 조언부탁합니다.

0 추천
변수선언시

a.java
b.java
c.java

가 있는데

ImageButton bt1 ;
ImageButton bt2 ;
...

Bitmap bm1 = null;
Bitmap bm2 = null;
...

int num1 = 0;
int num1 = 0;
...

===================

위 변수들은
a.java
b.java
c.java
에서 모두 필요해서 똑같은 이름으로
필요에 의해서 전역변수로 a b c.java에 모두 선언되고 있습니다.

1.
이런식으로 변수가 여러페이지에서 같은 이름으로 선언이 될때
메모리도 절약하면서 효율적으로 변수를 선언하는 방법이 있는지요?

2.
메모리절약으로
private static ImageButton bt1 ;
형식으로
private static 으로 선언하면
메모리가 절약이 된다는데 이것으로 선언하는게 낳을까요? 어떤차이일까요
현재는 ImageButton bt1 ;  이렇게만 선언하고 있습니다.

조언부탁합니다

감사합니다
사과1 (180 포인트) 님이 2013년 2월 18일 질문

2개의 답변

0 추천
뷰를 여러 액티비티에서 공동으로 사용하게 되면

IllegalStateException이 발생할 수 있습니다.

어지간하면 뷰는 각각 액티비티에서 생성해서 사용하시구요.

아니면 remove / add 확실하게 해 주시구요.

다른 변수들은 Application 클래스나 싱글턴 클래스로 관리하시면 될듯 합니다.
퐁풍 (8,740 포인트) 님이 2013년 2월 18일 답변
답변 감사합니다^^ ~~~
0 추천
a.java, b.java, c.java 가 별개의 역할을 한다면, 각각에서 private static으로 선언하는것은 큰 의미가 없습니다.

무의미한 static은 오히려 피해야하구요. 또한 UI 컴포넌트는 UI가 걸려있어서 static으로 사용하면 정말 예상하지 못한 결과를 볼 수도 있습니다.

a,b,c.java들이 객체를 공유하는 것이 아니라면 어차피 메모리 스택에 따로 점유되니까요.

다만 효율적으로 변수를 선언하는 것에 관해서는, a,b,c의 상위 클래스를 생성하고(ABC.java) 해당 변수들을 protected로 선언해주고 a.java, b.java, c.java에서 상속받는다면 새로 선언할 필요없이 변수들을 바로 쓸 수 있겠죠. 다만 이 경우에도 결국 변수들만큼 메모리를 고대로 잡아먹으니 메모리 절감 효과는 크게 없습니다.

만약 해당 변수들이 공유가 되는 부분들이 있다면 설계를 조금 다르게 하셔야하는게 아닌가 싶습니다.
천도복숭아 (6,080 포인트) 님이 2013년 2월 18일 답변
감사합니다 도움이 많이 되었습니다^^
...