实例化来自类[重复]的ViewModel

问题描述 投票:1回答:1

情况:收到SMS后,MyReceiver类将提取SMS,然后应使用ViewModel对象将数据插入数据库。该文档着重于扩展AppCompatActivity的类的实例化,但是是否有必要将现有活动的所有权传递给ViewModelProvider构造函数?

问题:从公共类(不是活动)访问ViewModel对象。

public class MyReceiver extends BroadcastReceiver{
   public void onReceive(Context context, Intent intent){
      mMyViewModel = new ViewModelProvider(??).get(MyViewModel.class);
   }
}

尝试的解决方案:为了将this传递给ViewModelProvider构造函数,我尝试使MyReceiver实现androidx.lifecycle.ViewModelStoreOwner。这需要覆盖方法getViewModelStore。但是我不明白什么是ViewModelStore或如何创建它来返回ViewModel。

@NonNull
@Override
public ViewModelStore getViewModelStore(){
   return ??; 
}

任何帮助将不胜感激。

java android viewmodel android-viewmodel
1个回答
0
投票

您的与此问题The correct way to obtain a ViewModel instance outside of an Activity or a Fragment相似的问题

您不应该在非活动/片段类中实例化视图模型。对于您的情况,当onReceive触发时,您应该“通知”活动/片段,然后对该活动/片段进行操作。因此,应在您的活动/片段上实例化viewmodel。

© www.soinside.com 2019 - 2024. All rights reserved.