Flutter中Android应用进入最近应用列表时触发哪个生命周期方法?Android12异常
Flutter Android进入最近应用列表的生命周期问题
在Android 12及以上系统中,应用进入最近应用列表(概览界面)时,Flutter默认的didChangeAppLifecycleState回调不会触发AppLifecycleState.inactive或AppLifecycleState.paused——这是因为Android 12调整了应用状态判定:进入最近应用列表时,应用仍处于前台可见状态(仅被概览界面遮挡),并未真正进入后台,所以Flutter的生命周期回调不会触发对应状态变更。
要实现进入最近应用列表时的状态监听,需要结合Android原生的窗口焦点回调,通过MethodChannel桥接Flutter层:
实现步骤
1. Android原生层添加窗口焦点监听
在MainActivity.kt中重写onWindowFocusChanged方法,通过MethodChannel向Flutter层传递焦点状态:
import io.flutter.embedding.android.FlutterActivity import io.flutter.embedding.engine.FlutterEngine import io.flutter.plugin.common.MethodChannel class MainActivity : FlutterActivity() { private val CHANNEL = "app_lifecycle" override fun onWindowFocusChanged(hasFocus: Boolean) { super.onWindowFocusChanged(hasFocus) MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL) .invokeMethod("onWindowFocusChanged", hasFocus) } }
2. Flutter层监听原生传递的状态
在Flutter页面中注册MethodChannel,接收焦点状态并更新UI:
import 'package:flutter/services.dart'; import 'package:flutter/material.dart'; class YourPage extends StatefulWidget { const YourPage({super.key}); @override State<YourPage> createState() => _YourPageState(); } class _YourPageState extends State<YourPage> { late MethodChannel _channel; bool shouldBlur = false; @override void initState() { super.initState(); _channel = const MethodChannel("app_lifecycle"); _channel.setMethodCallHandler((call) async { if (call.method == "onWindowFocusChanged") { final bool hasFocus = call.arguments as bool; setState(() { shouldBlur = !hasFocus; }); } }); } @override Widget build(BuildContext context) { return Scaffold( body: Stack( children: [ // 你的主内容 const Center(child: Text("主内容")), // 根据shouldBlur添加模糊层 if (shouldBlur) BackdropFilter( filter: const ImageFilter.blur(sigmaX: 5, sigmaY: 5), child: Container(color: Colors.black.withOpacity(0.3)), ), ], ), ); } }
补充说明
- 该方案仅针对Android平台,可通过
Platform.isAndroid做条件判断,避免影响iOS的生命周期逻辑。 - 当用户从最近应用列表回到应用时,
onWindowFocusChanged(true)会被触发,shouldBlur会被重置为false。
内容的提问来源于stack exchange,提问作者Balaji
相关产品推荐
相关产品推荐

