0

全局创建并在函数List<String> mainList中添加一项。main()但是在Workmanager.executeTask的回调里面mainList的lenth还是0,甚至mainList的hashCode也不一样。

  • 为什么会这样?
  • 如何将 mainList 设为 Singleton?
  • 尝试打印Isolate.current.debugName,它始终是“主要的”。
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());
}
4

1 回答 1

0

ListenableWorker.startWork()每次创建一个新的 FlutterEngin 实例并执行Workmanager.executeTask.callback

所以没有办法使用单例对象。

背景工作者.kt

于 2021-02-15T15:16:14.030 回答