gpt4 book ai didi

java - 如何使用服务或的房间数据库

转载 作者:行者123 更新时间:2023-12-02 00:57:34 27 4
gpt4 key购买 nike

美好的一天,

即使应用程序被杀死,应用程序也需要监视传入的短信,所以我认为服务是完成这项工作的最佳方式,但当我尝试调用 View 模型时,我遇到了问题。

我正在尝试使用我的项目服务从后台进程中选择、插入、更新、删除我的房间数据库。这是我的简单代码。

public class ReadIncomingSMS extends Service {
RoomViewModel model;

@Override
public IBinder onBind(Intent intent) { return null; }

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
model = ViewModelProviders.of((FragmentActivity) getApplicationContext()).get(RoomViewModel.class);
}
}

但是 logcat 说,

java.lang.RuntimeException: Unable to start service com.mgb.textvote.services.ReadIncomingSMS@3ae6b5cf with Intent { cmp=com.mgb.textvote/.services.ReadIncomingSMS }: java.lang.ClassCastException: android.app.Application cannot be cast to androidx.fragment.app.FragmentActivity at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3119)

Caused by: java.lang.ClassCastException: android.app.Application cannot be cast to androidx.fragment.app.FragmentActivity at com.mgb.textvote.services.ReadIncomingSMS.onStartCommand(ReadIncomingSMS.java:47)

如果应用程序上下文无法转换为fragmentActivity,那么我们如何在服务内使用房间数据库或者在后台进程中查询的最佳方法是什么?

最佳答案

您正在尝试访问服务中的 FragmentActivity ViewModel。

为服务创建单独的 ViewModel,它将起作用。

关于java - 如何使用服务或的房间数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57802246/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com