android - 有没有办法检测应用程序是否通过后退按钮关闭?
问题描述
当您通过 Android 上的后退按钮关闭 Flutter 应用时,插件会出现一些问题。插件的 dart/flutter 端重新启动,android 部分没有。这会导致麻烦,尤其是在播放音频等后台活动时。我认为这是一个关键问题,所以我创建了一个 GitHub 问题:https ://github.com/flutter/flutter/issues/31734
我想做一个解决方法,所以如果应用程序通过后退按钮关闭,播放应该会停止。
我试图通过该didChangeAppLifecycleState
方法检测后退按钮关闭操作。但是在那里我可以确定它是正常的关闭动作还是使用后退按钮。
您可以使用音频播放器插件的示例自己尝试一下。我还在那里创建了一个新问题
解决方案
在我看来,您无法准确确定应用程序是否已通过后退按钮关闭。相反,您可以使用back_button_interceptor作为中间件来确定应用程序是否将通过后退按钮关闭:
bool myInterceptor(bool stopDefaultButtonEvent) {
String currentRoute = BackButtonInterceptor.getCurrentNavigatorRouteName(context);
if (currentRoute == '/home') {
// Back button has been pressed while you're in the home, so the app is going to close
doYourStuff();
}
return false;
}
当然,您必须实现路由才能实现这一点,但这是我能找到的最精确的方法,因为创建覆盖(并因此覆盖后退按钮操作)的所有内容都会更改 的结果getCurrentNavigatorRouteName
,包括对话框甚至PopupMenu
s from AppBar
。
推荐阅读
- c - 关于链表结构的语法问题
- oracle - Oracle APEX 交互式报告中的错误 - ORA-01427:单行子查询返回多于一行
- spring - Sping MVC和hibernate:jsp中未声明的变量在保存时变为null
- ios - 我的应用程序没有执行我编写的 Swift 代码
- node.js - TypeScript:仅在单元测试中找不到模块的声明文件
- python-3.x - 如何使用 Boto3 将大文件拆分成小块并并行加载到 Dynamodb
- android - 无法合并dex,Android项目构建失败
- typescript - 高图表 - 显示多个图表的系列数据
- arrays - Bash用变量定义向量
- html - 如何在小容器中显示高分辨率的网络摄像头