2013-07-09 3 views

답변

1

귀하의 예는 몇가지 실수가 있습니다.

예를 들어 Network를 인스턴스화하지 않고 인스턴스화 할 때마다 정적 필드가 다른 인스턴스를 참조합니다. 당신이 네트워크 싱글에서 활동 인스턴스를 제거하지 않으면 네트워크를 작성하는 더 적절한 방법은, 그러나 다음

public class Network { 
    private static final Network INSTANCE = new Network(); 

    private Network() {/*empty*/} 

    public static Network get() { 
     return INSTANCE; 
    } 

    //rest of the code ommitted 
} 

것 (네트워크 클래스의 정적 필드 인스턴스를 - 당신은 어떤 시점에서 초기화 가정) 그 인스턴스는 항상 ArrayList에 추가 된 Activity 객체에 대한 참조를 갖습니다. 이렇게하면 쓰레기 수거가 불가능합니다.

+0

죄송합니다. 코드가 실제 코드보다 의사 코드가 될 의도가 더 있었기 때문에 언급하지 않았습니다. 따라서 Activity가 여전히 ArrayList에 있다면, Activity가 일시 정지/소멸 될 때'network.removeListener (this);'를 추가하고 호출해야합니까? 그렇다면 왜 다른 API로 그 동작을 보지 못합니까? – StackOverflowed

+0

그건 그걸 할 수있는 방법 중 하나입니다. 어떤 다른 API를 언급하고 있습니까? – dkateros

+0

예를 들어 MediaPlayer setOnPreparedListener는 작은 예제입니다. – StackOverflowed