2011-07-02 3 views
2

나는 정의 핸들러와 활동을 가지고 것인가 , 그것은 누설 될 것인가 (아니면 오히려 외부 목록이 내 활동에 대한 영원한 참조를 유지할 것인가)? 내 활동 이외의 정적 목록에이 핸들러를 할당하는 경우 즉, : 내에서 onCreate 방법에서이 시나리오에서 활동 누출에 정의 된 핸들러는

@Override 
public void onCreate(Bundle savedInstanceState) {   
     SomeStaticClass.addHandler(updateHandler); 
} 

... 

public class SomeStaticClass { 
    static List<Handler> handlers = new ArrayList<Handler>(); 

    public static void addHandler(Handler handler) { 
     handlers.add(handler); 
    } 
} 

답변

2

은, 그것은 누출 (또는 오히려, 그 외부 목록은 영원히 내 활동에 대한 참조를 유지합니다) ?

예. 정적 데이터 멤버에 Handlers을 넣지 마십시오.

+0

OS가보기를 "폐기"하거나 더 이상 사용하지 않을 때 호출되는 이벤트 같은 대안이 있습니까? 그렇다면 핸들러 등록을 취소 할 수 있습니까? – bugfixr

+0

@Chu : "보기가"폐기 "되었거나 더 이상 OS에서 사용되지 않을 때 호출되는 이벤트와 같은 대안이 있습니까?" - IMHO, 당신이 생각하고있는 문제는 정적 데이터 멤버에'Handlers'를 넣는 것 이외의 다른 방법으로 해결해야합니다. 이 "Handlers"정적 목록에 의해 달성하려는 것을 설명하려고 귀찮게하지 않았기 때문에, 나 또는 다른 누군가가 여러분이 실제로 여기서해야 할 일을 제안하는 것은 불가능합니다. – CommonsWare

+0

좋아요, 정확히 똑같은 문제를 해결하기 위해 새로운 질문을 시작했습니다. http://stackoverflow.com/questions/6557878/updating-a-view-from-a-handler-cleaning-up-the-mess – bugfixr

관련 문제