如何解决如何使用 flutter-workmanager 访问 Workmanager.executeTask 回调中的单例对象
全局创建 List<String> mainList
并在 main()
函数中添加一项。但是在Workmanager.executeTask的回调里面,mainList的lenth还是0,就连mainList的hashCode也不一样。
- 为什么会这样?
- 如何将 mainList 设为 Singleton?
- 尝试打印
Isolate.current.debugName
,它始终是“main”。
List<String> mainList=[];
void callbackdispatcher() {
Workmanager.executeTask((task,inputData) {
print("mainList.length=${mainList.length}"); // always length is 0
print("Isolate.current.debugName = ${Isolate.current.debugName}");
return Future.value(true);
});
}
void main() {
Workmanager.initialize(
callbackdispatcher,isInDebugMode: true,);
mainList.add("String1");
print("mainList.length=${mainList.length}"); // length is 1
print("Isolate.current.debugName = ${Isolate.current.debugName}");
Workmanager.registerPeriodicTask("1","simpleTask");
runApp(MyApp());
}
解决方法
在 ListenableWorker.startWork()
中,每次都会创建一个新的 FlutterEngin 实例并执行 Workmanager.executeTask
的 callback
。
所以无法使用单例对象。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。