我正在使用一个库,它使用我经过的接口与调用活动进行通信,问题是一旦我旋转设备,活动的新实例将不再接收回调。我在考虑将此库的实例保存在 AndroidViewModel 中,这样做会不会因为库的实例引用我的活动而遇到内存问题?
旋转时导致问题:
public class MainActivity implements Lib.Callback
{
private Lib mLib;
@Override
public void onCreate ( final Bundle savedInstanceState){
mLib = new Lib(this);
}
@Override
protected void callback() {
...
}
}
如果我在AndroidViewModel中输入"mLib"会更好吗?或者这种情况有更好的选择吗?
如果这样做,则会泄漏活动。 而且您仍然只有旧实例。不是新的。 例如,在视图模型中实现回调,然后从视图模型中公开一些活动可以观察的实时数据。它将在设备旋转时工作。
这样做会因为 lib 的实例引用我的活动而遇到内存问题吗?
将 lib 引用保存在ViewModel
中将导致内存泄漏 场景。由于您的库具有Activity
的引用,因此当您旋转手机时,该库将保留您旧活动的参考。