我正在做一个与BLE设备交互的项目。当应用程序打开时,我会主动显示从设备传输的数据。但是,我希望能够接收数据时,应用程序被关闭以及。现在,我有一个前台服务正在运行,在应用程序关闭后继续从BLE设备接收数据。我想持久化此数据并在应用恢复时更新状态。
现在,我有一个ViewModel
来处理片段的UI。我最初的计划是当我的MainActivity被销毁时,通过bundle将所有数据传递给我的Service。然后,每当我从BLE设备接收数据时,我都会将新状态存储在共享首选项中。当MainActivity恢复时,我检查sharedPreferences以检索Service中更新的状态,然后从那里继续。
但是,我不确定这是否是最好的方法,因为我在ViewModel中存储了相当多的数据(2个类,1个BLE设备列表和1个BLE服务列表)。我想知道是否有更好的方法来维护这样的状态,例如ViewModel,但更像服务器。
1条答案
按热度按时间ltskdhd11#
看看.我已经创建了一个前台服务,并在API 34上测试了这段代码。
不需要使用Bundles或Binders。
我删除了不相关的线。正如你所看到的,我可以通过简单地调用方法将数据从
MainActivity
传输到FGService
,反之亦然。通常,服务和Activity一次只运行一次。所以使用singleton就可以了。如果您计划同时多次运行Activity,则必须更新代码。
要持久化数据,我建议使用SQLite,因为它不仅比共享首选项快。
MainActivity.kt:
FGService.kt: