一尘不染

Flutter android_alarm_manager插件不会定期运行

flutter

我试图在Flutter中创建后台计时器,每n秒调用一次。调用AndroidAlarmManager.periodic应该每2秒运行一次printHello函数,但是看起来它是以更大的间隔随机调用的。我在做什么错?

import 'package:android_alarm_manager/android_alarm_manager.dart';


void runTimer()  async{
  await AndroidAlarmManager.periodic(const Duration(seconds: 2), 0, printHello, exact: true);
}

void printHello(){
  print("Hello");
}

main() async {
  await AndroidAlarmManager.initialize();
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      home: Scaffold(
        body: Center(
          child: InkWell(onTap: runTimer,
              child: Container(child: Text('Run Timer'))),
        ),
      ),
    );
  }
}

阅读 695

收藏
2020-08-13

共1个答案

一尘不染

您无法通过以下时间安排警报AlarmManager

注意:从API
19(Build.VERSION_CODES.KITKAT)开始,警报传递是不精确的:操作系统将转移警报,以最大程度地减少唤醒和电池消耗。有一些新的API支持需要严格交付保证的应用程序。请参见setWindow(int,long,long,android.app.PendingIntent)和setExact(int,long,android.app.PendingIntent)。targetSdkVersion早于API
19的应用程序将继续看到以前的行为,在该行为中,所有警报均在请求时准确传递。

请参阅:https//developer.android.com/reference/android/app/AlarmManager

2020-08-13