“MainActivity 泄露了最初绑定在这里的 ServiceConnection org.altbeacon.beacon.BeaconManager” ——这就是我面临的问题。我正在使用库中的一个类中的 AltBeacon。该类在实例化时传递了一个 Context 元素。该类实现了 BeaconConsumer 并且覆盖的行为如下所示:
@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(并且也永远不会调用 finalize()),所以永远不会调用 unbindService。这导致了上面提到的泄漏。
我怎样才能从中恢复过来?我不想公开一个特殊的 cleanup() 函数,该库应该能够检测到关闭时刻并且应该在内部进行清理。那可能吗?
欢迎任何指针。问候