我目前正在编写一个应用程序,并记录一些信息(例如GPS),即使屏幕关闭(即其屏幕在睡眠模式下已超时)。
它经常执行一次val myList = listOf("item1", "item2", "item3")
以更新小部件。
但是,如果屏幕处于睡眠状态/不活动,我不确定是否需要调用setState()
或某些其他占用大量CPU资源的操作,并且最好不调用它来节省电池电量?< / p>
所以,我想知道是否有任何方法可以检测屏幕是否关闭,因此不调用setState。.
例如使用伪代码
setState()
我不确定当萤幕熄灭时是否会触发某些事件,如颤动所见。另外,如果有GPS之类的功能,我想在屏幕关闭时(我目前正在使用监听器)正常记录,但不更新显示内容。 GPS会进入其他模式吗?如果有的话,有什么方法可以阻止它?
答案 0 :(得分:1)
StatefullWidget具有已安装标志mounted property
执行if (checkScreenIsOn())
代替if (mounted) setState((){...})
如果您想知道屏幕状态,则必须使用MethodChannel与本机api通信,例如。 https://pub.dartlang.org/packages/screen_state