SurfaceView 화면에 오브젝트를 그리기 위해서 ArrayList를 사용하고 있습니다.
오브젝트는 반짝거리는 별인데요.
스레드를 돌면서 해당 SurfaceView 내부의 ArrayList에 새로 그릴 별을 추가합니다.
별마다 지속 시간이 다르며 별의 지속 시간이 끝나면 boolean 값으로 end를 찍습니다.
별을 그릴 때 해당 별이 end인지 확인하여, 다른 ArrayList에 값을 넘겨주고,
end된 별만을 모아둔 ArrayList에서 값을 참조해 그릴 별을 모아둔 ArrayList에서 삭제 처리합니다.
이런 구조인데...
어플의 성능을 테스트 해보니... 열심히 돌아가는 화면 보다도,
저 별들을 그리는 과정에서 ArrayList 내부 개체를 삭제하는데
가장 많은 시간이 들었다는 것을 확인할 수 있었습니다.
테스트 프로그램에서 가장 연산이 많은 부분이 ArrayList.remove() 메소드라고 떡하니 뜨더라구요...
문제는 별을 그리는 스레드와 별을 추가해 주는 스레드가 서로 달라
참조 중에 추가가 일어날 수 있어서 LinkedList의 활용이 불가능 하다는 점입니다.
어떻게 하면 별의 List에서 지속시간이 종료된 별 객체를 빠르게 삭제할 수 있을까요...?