2014-10-12 3 views
0

"MainActivity는 원래 여기에 바인딩 된 ServiceConnection org.altbeacon.beacon.BeaconManager를 유출했습니다." - 이것이 문제입니다. 라이브러리의 클래스에서 AltBeacon을 사용하고 있습니다. 인스턴스 생성시 클래스에 Context 요소가 전달됩니다. 이 클래스는 BeaconConsumer를 구현하고 우선은 아래와 같이 행동 :RadiusNetwork AltBeacon leaking ServiceConnection

@Override 
public Context getApplicationContext() { 
    return mContext.getApplicationContext(); 
} 
@Override 
public boolean bindService(Intent intent, ServiceConnection connection, int mode) { 
    return mContext.bindService(intent, connection, mode); 
} 

@Override 
public void unbindService(ServiceConnection connection) { 
    mContext.unbindService(connection); 
} 
@Override 
public void onBeaconServiceConnect() { 
     // do things 
} 

bindService가 작동하지만 라이브러리들의 OnDestroy (그리고 마무리() 중 하나를 호출되지 않습니다)이 없기 때문에, unbindService가 호출되지 않습니다. 이것은 위에서 언급 한 유출로 이어집니다.

어떻게 복구 할 수 있습니까? 특수한 cleanup() 함수를 노출하고 싶지 않을 때 라이브러리는 종료 순간을 감지 할 수 있어야하고 내부적으로 정리해야합니다. 그게 가능하니?

모든 환영합니다. 감사합니다.

답변

0

정상적으로 정리 기능이 추가되었습니다. 해결

+1

user3534326의 "대답"이 답변으로 잘못되었지만 여전히 유효한 설명입니다. 문제를 어떻게 풀 었는지에 대해 자세히 설명해 주시겠습니까? 고마워요! –

+1

글쎄, 달이 끝나고 의견을 말하기는 쉽지 않지만, 왜 user3534326의 "대답"이라고 부르는 지 알 수는 없습니다. 어쩌면 삭제 될 수 있습니다. 명시 적으로 "바인딩 해제"를 한 라이브러리에서 별도의 정리 기능이 있었음을 기억하지만, 잠시 동안이었습니다. 현재 솔루션은 시작/중지 스캔시 바인딩/바인딩 해제를 수행하므로 대칭입니다. 또한이 문제는 이후 버전의 Beacon 라이브러리 사용자에 의해 해결되었지만 확실하지는 않습니다. – decades

+0

시간 내 주셔서 감사합니다. 나는 정말로 "어떻게 그것을 해결 했는가?"와 같은 것을 담고있는 (지금 삭제 된) "대답"에 대해 이야기하고 있습니다. 나는 당신의 솔루션을 기억하기가 어려울 것이라고 확신합니다. 그래서 시험해 줘서 고마워! 사용자가 도움을 얻을 수 있기를 바랍니다. 다음 번에 귀하의 질문에 대한 해결책을 찾으면 그와 같은 미래 비전을위한 세부 사항을 공유하는 것이 좋습니다. 어쨌든,이 오래된 경우에 대한 논평을 주셔서 다시 감사합니다 –