是否可以在Android ViewModel中保存带有活动引用的复杂对象?



我正在使用一个库,它使用我经过的接口与调用活动进行通信,问题是一旦我旋转设备,活动的新实例将不再接收回调。我在考虑将此库的实例保存在 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的引用,因此当您旋转手机时,该库将保留您旧活动的参考。

相关内容

  • 没有找到相关文章

最新更新