코드를 짜다보면 뷰의 구조가 복잡해서 혹은, 다르게 뷰와 뷰 사이에서 무언가 함수를 실행시키기 위해서 static을 사용하는 경우가 있다.
Static을 사용하는 보편적인 경우는 Constant 변수에 사용을 해서 메모리에 상주를 시켜놓고 따로 해당 클래스의 instance를 생성하지 않고도 여러 곳에서 공통적으로 사용하는 변수에 사용을 하게 된다.
이를테면, StringConst.java 란 파일에
public static final String PRODUCT_ID = "product_id";
위와 같이 여러 Constant변수를 생성해서 사용할 때 많이 사용이 된다.
프로젝트를 진행하다가 뷰안에 여러개의 뷰가 들어가 있고, 이를테면 부모뷰 아래에 있는 다른 뷰에서 무언가 작업을 했을 때 부모뷰까지 영향을 주기 위해서 Listener나, Broadcast같은 방법을 사용하지 않고 Static으로 고정시켜서 쓰는 경우가 있다. 자식뷰가 켜지기 위해서 항상 부모뷰가 생성이 되고 자식뷰가 나타나기 때문에 견고하다고 생각할 지 몰라도, 생각보다 꽤 위험한 방법이였다.
죽는 문제를 떠나서 부모뷰나 자식뷰에서 자잘한 UI문제가 발생한다. (간헐적으로 발생하고 꽤나 불안정하다) 그 이유는 위에서 이야기했듯이, instance가 생성이 되던말던, static으로 짜여진 함수나 뷰, 변수들은 항상 메모리에 상주하게 되기 때문에, 고정되어 있는 변수는 큰 문제가 없지만, 유동적인 뷰의 경우에는 그 값이 바뀌지 않거나 이미 고정되어 있기 때문에 다양한 오류들을 만들어낼 가능성이 높다.
아무리 진행속도가 급해도 뷰에 static을 쓰는 오류는 범하지 말아야 하는 이유다.
'옛글 > 안드로이드 프로그래밍' 카테고리의 다른 글
SparseArray가 HashMap보다 좋은이유와 사용예 (4) | 2013.10.21 |
---|---|
안드로이드 4.3 발표 '무엇이 바뀌었을까?' (0) | 2013.07.30 |
Eclipse Heap size Error등 에러를 막기 위한 메모리 설정 (0) | 2013.05.23 |
안드로이드 앱 품질 가이드라인 (0) | 2013.04.23 |
[안드로이드] GridView Auto Scroll (SmoothScroll) (0) | 2013.03.27 |