当我更改LiveData的观察者时会发生什么

时间:2020-07-23 23:44:50

标签: java android mvvm android-livedata

如果我的ViewModel使用以下代码行观察了一些LiveData,会发生什么情况

myViewModel.getData.observe(getViewLifeCycle(),Observer);

如果我的视图模型中有另一个LiveData data2并开始观察此数据,该怎么办。

myViewModel.getData2.observe(getViewLifeCyle(),Observer);

第一个观察者会发生什么?那被认为是内存泄漏吗? 在观察花药数据之前,应该删除数据上的所有观察者吗?

编辑: 我有一个用于搜索栏的以下代码,用于观察Room数据库中的数据。

@Override
            public boolean onQueryTextChange(String s) {
                String query =  "%" + s + "%";
                Log.d(TAG, "onQueryTextChange: " + query);
                problemViewModel.getProblemsByQuery(query).observe(getViewLifecycleOwner(),observer);
                return true;
            }
                
                    

我担心这条线。

problemViewModel.getProblemsByQuery(query).observe(getViewLifecycleOwner(),observer);

每当文本更改时,我都会在方法内一遍又一遍地重复。那会引起问题吗?

1 个答案:

答案 0 :(得分:0)

这里没有立即可见的泄漏。当然,您可以同时观察任意数量的LiveData-尽可能多地容纳到内存中。如果您想要的话,他们都可以共享同一个观察者对象。