记录Flutter监控APP生命周期变化时回调

本文通过示例代码详细介绍了如何在Flutter应用中监听并记录APP的生命周期变化,开发者可以直接使用这些代码实现相应功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

直接上代码,复制可以直接使用,进行监控

class HomeMain extends StatefulWidget {
  @override
  _HomeMain createState() => _HomeMain();
}

class _HomeMain extends State<HomeMain> with WidgetsBindingObserver {
@override
void initState() {
  super.initState();
  WidgetsBinding.instance!.addObserver(this); //添加观察者
}
  ///生命周期变化时回调
  /// resumed:应用可见并可响应用户操作
  ///  inactive:用户可见,但不可响应用户操作
  ///  paused:已经暂停了,用户不可见、不可操作
  ///  suspending:应用被挂起,此状态IOS永远不会回调
  @override
  void didChangeAppLifecycleState(AppLifecycleState state) {
    // TODO: implement didChangeAppLifecycleState
    super.didChangeAppLifecycleState(state);
    switch(state){
      case AppLifecycleState.resumed:
// TODO: 从后台切换前台,界面可见.
        LogUtils.v('resumed');
        break;
      case AppLifecycleState.inactive:
        // TODO: 用户可见,但不可响应用户操作
        debugPrint('inactive');
        LogUtils.v('inactive');
       
好的,我可以为你解答。可以使用 Flutter 中的 Timer 类来实现计器功能,并借助 WidgetsBindingObserver 来监听 App 生命周期,从而实现当 App 进入后台器依然继续运行的效果。以下是示例代码: ```dart import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; class TimerWidget extends StatefulWidget { @override _TimerWidgetState createState() => _TimerWidgetState(); } class _TimerWidgetState extends State<TimerWidget> with WidgetsBindingObserver { Timer _timer; int _count = 0; @override void initState() { super.initState(); _timer = Timer.periodic(Duration(seconds: 1), (timer) { setState(() { _count++; }); }); WidgetsBinding.instance.addObserver(this); } @override void dispose() { _timer.cancel(); WidgetsBinding.instance.removeObserver(this); super.dispose(); } @override void didChangeAppLifecycleState(AppLifecycleState state) { if (state == AppLifecycleState.resumed && _timer.isActive == false) { _timer = Timer.periodic(Duration(seconds: 1), (timer) { setState(() { _count++; }); }); } else if (state == AppLifecycleState.paused && _timer.isActive == true) { _timer.cancel(); } } @override Widget build(BuildContext context) { return Text( '$_count', style: TextStyle(fontSize: 24), ); } } ``` 在 initState 中创建一个 Timer 实例,并在每秒回调中更新计数器的值。同通过 WidgetsBindingObserver 监听 App 生命周期,当 App 进入后台,如果 Timer 正在运行则取消,当 App 重新进入前台,如果 Timer 没有运行则重新创建。最后在 build 方法中显示计数器的值即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值