文章目录

  • android_alarm_manager
  • 使用
  • 效果

android_alarm_manager

一个Flutter插件,用于访问Android AlarmManager服务(定时服务,并且和主线程不在一个隔离区中,程序退出后还会继续执行定时器),并在警报触发时在后台运行Dart代码。

地址:https://github.com/flutter/plugins/tree/master/packages/android_alarm_manager

使用

  1. 添加依赖:

    android_alarm_manager: ^0.4.1+6
    

​ 如果程序运行报错,那就把依赖包下载下来放到项目中。

  1. AndroidManifest.xml中添加权限

    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    

    并且在<application></application>标签中添加:

    <serviceandroid:name="io.flutter.plugins.androidalarmmanager.AlarmService"android:permission="android.permission.BIND_JOB_SERVICE"android:exported="false"/>
    <receiverandroid:name="io.flutter.plugins.androidalarmmanager.AlarmBroadcastReceiver"android:exported="false"/>
    <receiverandroid:name="io.flutter.plugins.androidalarmmanager.RebootBroadcastReceiver"android:enabled="false"><intent-filter><action android:name="android.intent.action.BOOT_COMPLETED"></action></intent-filter>
    </receiver>
    
  2. Application中注册。

    public class Application extends FlutterApplication implements PluginRegistrantCallback {@Overridepublic void onCreate() {super.onCreate();AlarmService.setPluginRegistrant(this);}@Overridepublic void registerWith(PluginRegistry registry) {GeneratedPluginRegistrant.registerWith(registry);}
    }
    

    如果不在application中调用setPluginRegistrant()方法,将会抛出异常。

  3. 在dart文件中初始化并使用。

    import 'dart:async';
    import 'package:android_alarm_manager/android_alarm_manager.dart';
    import 'package:flutter/widgets.dart';void printMessage(String msg) => print('[${DateTime.now()}] $msg');void printPeriodic() => printMessage("Periodic!");
    void printOneShot() => printMessage("One shot!");Future<void> main() async {final int periodicID = 0;final int oneShotID = 1;// 初始化AlarmManager service.await AndroidAlarmManager.initialize();printMessage("main run");runApp(const Center(child:Text('See device log for output', textDirection: TextDirection.ltr)));//每隔1分钟调用一次,一直调用await AndroidAlarmManager.periodic(const Duration(seconds: 1), periodicID, printPeriodic,wakeup: true);//只调用一次await AndroidAlarmManager.oneShot(const Duration(seconds: 1), oneShotID, printOneShot);
    }
    

    效果

    控制台打印日志:

flutter在与主线程不同隔离区使用定时器相关推荐

  1. c++主线程等待子线程结束_简单明了的 Python 多线程来了 | 原力计划

    作者 | 万里羊责编 | 王晓曼出品 | CSDN博客线程和进程计算机的核心是CPU,它承担了所有的计算任务,就像是一座工厂在时刻运行.如果工厂的资源有限,一次只能供一个车间来使用,也就是说当一个车间 ...

  2. Android线程之主线程向子线程发送消息

    和大家一起探讨Android线程已经有些日子了,谈的最多的就是如何把子线程中的数据发送给主线程进行处理,进行UI界面的更新,为什么要这样,请查阅之前的随笔.本篇我们就来讨论一下关于主线程向子线程如何发 ...

  3. python线程的注意点(线程之间执行是无序的、主线程会等待所有的子线程执行结束再结束(守护主线程)、线程之间共享全局变量、线程之间共享全局变量数据出现错误问题(线程等待(join)、互斥锁))

    1. 线程的注意点介绍 线程之间执行是无序的 主线程会等待所有的子线程执行结束再结束 线程之间共享全局变量 线程之间共享全局变量数据出现错误问题 2. 线程之间执行是无序的 import thread ...

  4. java 父线程_Java父线程(或是主线程)等待所有子线程退出的实例

    导读热词 实例如下: static void testLock1(){ final AtomicInteger waitCount = new AtomicInteger(30000); final ...

  5. 通过RunLoop监听主线程的卡顿

    2019独角兽企业重金招聘Python工程师标准>>> 实现原理:开启子线程监控主线程的RunLoop的状态,并设定超时时间.如果发生了超时,而且此时RunLoop的状态为kCFRu ...

  6. python 中主线程结束 子线程还在运行么_python 线程之一:线程的创建、启动及运行方式

    threading:这个模块在较低级的模块 _thread 基础上建立较高级的线程接口 以后我们就用 threading 模块来管理线程就可以了. Tread 类:控制线程创建.启动及运行方式 一.线 ...

  7. qt调用linux系统的线程函数吗,Qt之主线程与子线程通讯(linux下)

    Qt之主线程与子线程通信(linux下) 转载请注明出处:http://blog.csdn.net/feng1790291543 主线程与子线程通信主要是通过Qt上的Gui按钮,触发使得主线程上的信息 ...

  8. 用Handler的post()方法来传递线程中的代码段到主线程中执行

    自定义的线程中是不能更新UI的,但是如果遇到更新UI的事情,我们可以用handler的post()方法来将更新UI的方法体,直接传送到主线程中,这样就能直接更新UI了.Handler的post()方法 ...

  9. python主辅线程_python主线程捕获子线程的方法

    最近,在做一个项目时遇到的了一个问题,主线程无法捕获子线程中抛出的异常. 先看一个线程类的定义 ''''' Created on Oct 27, 2015 @author: wujz ''' impo ...

最新文章

  1. 第八章 Health Check
  2. 金猪钱罐——青龙羊毛
  3. 自媒体运营要知道的哪些知识
  4. java socket 如何设置so_keepalive属性_socket通信的KeepAlive设定
  5. ThinkPHP笔记——配置分组产生无法加载Index错误解决办法
  6. 总结apply和call方法的使用 bind方法 bind方法的使用 函数中的几个成员
  7. 同一条sql insert 有时快有时慢 引发的血案
  8. matlab size x 2,Matlab中的N=size(X,2)是什么意思
  9. 电商系统的商品规格设计方案
  10. [转载]Bluetooth协议栈学习之SDP
  11. clocks_per_sec 时间不正确_你该拥有的不只是护肤品,还有正确护肤时间表
  12. 逻辑斯蒂回归与最大熵模型---最大熵模型
  13. Qt connect()的第五种重载[=](){}
  14. 常用技术指标与四大交易理论
  15. 7.Linux/Unix 系统编程手册(上) -- 内存分配
  16. javascript的一些各浏览器不兼容的地方
  17. STM32 产品与选型
  18. 推荐几个程序员赚钱的平台,你有技术就有钱!
  19. 清除Marco1!$A$1提示软件日志.
  20. 电脑如何登录两个微信

热门文章

  1. 新安装Ubuntu18.04初始美化、常用配置调试及各种问题解决
  2. android 快速拍照,0.3秒快速对焦 不将就一加手机拍照评测
  3. java使用递归批量修改文件扩展名
  4. 直播平台系统源码APP怎样来检测
  5. RV32IM_指令介绍
  6. 兼容IE浏览器的全屏机制
  7. vue android 4.4兼容,vue cli3 打包兼容Android 4.4
  8. python爬虫正则表达式匹配为空的问题
  9. 一个像素占多大内存 多少字节
  10. Redis持久化之RDB原理