關於flutter生命週期WidgetsBindingObserver方法didChangeAppLifecycleState 無效的問題

如下代碼:

class _HomePageState extends State<HomePage> with WidgetsBindingObserver {

  @override
  void initState() {
    super.initState();
    WidgetsBinding.instance.addObserver(this);
    debugPrint('initState');
  }

  @override
  Future didChangeAppLifecycleState(AppLifecycleState state) async {
    super.didChangeAppLifecycleState(state);
    print("lifeChanged $state");
  }

  @override
  void dispose() {
    super.dispose();
    WidgetsBinding.instance.removeObserver(this);//銷燬
  }
}

發現從A頁面切換到B頁面並不會觸發didChangeAppLifecycleState()方法。

結果發現didChangeAppLifecycleState管理的生命並不是像Android那樣頁面切換的生命週期,而是監聽點擊home、或者物理返回鍵,將app的頁面從後臺切換到前臺進程纔會觸發。

 

 

注意:在鎖屏和解屏都會觸發didChangeAppLifecycleState,會照成不斷調用該方法,可能會照成某些業務場景bug。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章