作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263
郵箱 :291148484@163.com
本文地址:https://blog.csdn.net/qq_28550263/article/details/134127670
【介紹】:WidgetsBinding.instance 是Flutter中用于管理應(yīng)用程序事件和生命周期的重要工具,它允許開發(fā)者控制應(yīng)用程序的各個方面,以提供更好的用戶體驗。 WidgetsBinding.instance 上提供了一個 lifecycleState 屬性,可以用來獲取當(dāng)前應(yīng)用程序的生命周期狀態(tài)。
本文介紹 Flutter 應(yīng)用應(yīng)用程序的生命周期狀態(tài)(lifecycleState)及其用法。
1. 關(guān)于 WidgetsBinding
很多初學(xué)者是不會接觸和用到 WidgetsBinding.instance的,本文介紹的知識點是 WidgetsBinding.instance 的一個小部分。因此,先對 WidgetsBinding.instance 進(jìn)行大概的介紹。
WidgetsBinding.instance 是Flutter中的一個核心類的實例,用于管理應(yīng)用程序的事件循環(huán)和處理各種事件,例如布局、繪制、手勢和系統(tǒng)事件。它是 WidgetsBinding 類的一個單例實例,通過它可以訪問應(yīng)用程序的根 WidgetsBinding 對象。
WidgetsBinding 類是 Flutter 框架的一部分,它包含了以下常用的功能和應(yīng)用:
-
事件循環(huán)管理:WidgetsBinding負(fù)責(zé)管理Flutter應(yīng)用程序的事件循環(huán),它處理了各種事件的分發(fā)和調(diào)度。這包括構(gòu)建(build)事件、布局(layout)事件、繪制(paint)事件等。
-
處理系統(tǒng)事件:WidgetsBinding 可以處理系統(tǒng)級事件,例如按鍵事件、觸摸事件、指針事件等。它允許應(yīng)用程序響應(yīng)用戶的輸入和交互。
-
定時器和幀回調(diào):WidgetsBinding允許你注冊定時器和幀回調(diào),以便在未來的時間點執(zhí)行代碼或在下一幀繪制前執(zhí)行代碼。
-
狀態(tài)管理:WidgetsBinding 管理應(yīng)用程序的生命周期狀態(tài),包括
inactive
、paused
、resumed
和detached
狀態(tài)。這有助于應(yīng)用程序在不同狀態(tài)下進(jìn)行適當(dāng)?shù)奶幚怼?/p> -
媒體和屏幕分辨率信息:WidgetsBinding 提供了訪問媒體查詢(MediaQuery)和屏幕信息的方法,以便根據(jù)屏幕屬性調(diào)整UI。
-
錯誤處理:WidgetsBinding 還處理了Flutter應(yīng)用程序中的異常和錯誤,允許你注冊全局錯誤處理程序。
-
根`BuildContext:WidgetsBinding 提供了根 BuildContext,可以用于構(gòu)建全局部件。
WidgetsBinding 是整個 Flutter 應(yīng)用程序事件和生命周期管理的關(guān)鍵。開發(fā)者可以通過 WidgetsBinding.instance 來訪問它,并注冊事件回調(diào),以便在應(yīng)用程序的各個生命周期階段執(zhí)行自定義操作。例如,你可以使用 WidgetsBinding 來注冊全局的錯誤處理程序,管理應(yīng)用程序的生命周期狀態(tài),或執(zhí)行定時任務(wù)。
2. Flutter 應(yīng)用程序的生命周期狀態(tài)(lifecycleState)
WidgetsBinding.instance 提供了一個 lifecycleState 屬性,可以用來獲取當(dāng)前應(yīng)用程序的生命周期狀態(tài)。
WidgetsBinding.instance
的 lifecycleState
屬性是一個非常有用的工具,用于獲取并監(jiān)測應(yīng)用程序的生命周期狀態(tài)。生命周期狀態(tài)表示應(yīng)用程序當(dāng)前處于哪種狀態(tài),如前臺活動、后臺、非活動等。在Flutter中,AppLifecycleState
枚舉提供了不同的生命周期狀態(tài),包括 resumed
、inactive
、paused
和 detached
。
下面將詳細(xì)介紹 WidgetsBinding.instance
的 lifecycleState
屬性,以及每個生命周期狀態(tài)的含義和示例用法
2.1 獲取當(dāng)前生命周期狀態(tài)
你可以通過 WidgetsBinding.instance.lifecycleState
來獲取當(dāng)前應(yīng)用程序的生命周期狀態(tài)。這個屬性返回一個 AppLifecycleState
枚舉值(請參考附錄《AppLifecycleState 枚舉源碼(帶中文注釋)》),表示應(yīng)用程序的狀態(tài)。以下是如何獲取當(dāng)前生命周期狀態(tài)的示例:
AppLifecycleState? currentLifecycleState = WidgetsBinding.instance.lifecycleState;
print("Current Lifecycle State: $currentLifecycleState");
2.2 AppLifecycleState.resumed(恢復(fù)狀態(tài))
2.2.1 含義描述
當(dāng)應(yīng)用程序處于 resumed
狀態(tài)時,它位于前臺并處于活動狀態(tài)。用戶可以與應(yīng)用程序進(jìn)行交互,應(yīng)用程序可見。
2.2.2 應(yīng)用舉例
可以在此狀態(tài)下執(zhí)行需要響應(yīng)用戶交互的操作,例如啟動定時器或更新UI等。
下面的代碼,我們將創(chuàng)建一個頁面,當(dāng)應(yīng)用恢復(fù)到前臺時,頁面的顏色會改變:
/// 一個用于監(jiān)聽?wèi)?yīng)用程序生命周期狀態(tài)并相應(yīng)地更新UI顏色的組件。
class LifecycleWatcher extends StatefulWidget {
_LifecycleWatcherState createState() => _LifecycleWatcherState();
}
class _LifecycleWatcherState extends State<LifecycleWatcher> with WidgetsBindingObserver {
Color _color = Colors.green;
void initState() {
super.initState();
WidgetsBinding.instance.addObserver(this);
// 當(dāng)組件初始化時,將自身添加為應(yīng)用生命周期狀態(tài)的觀察者。
}
void dispose() {
WidgetsBinding.instance.removeObserver(this);
super.dispose();
// 在組件被銷毀時,確保將自身從應(yīng)用生命周期狀態(tài)的觀察者中移除,以防止內(nèi)存泄漏。
}
void didChangeAppLifecycleState(AppLifecycleState state) {
if (state == AppLifecycleState.resumed) {
// 當(dāng)應(yīng)用程序從后臺切換到前臺時,更新顏色為紅色。
setState(() {
_color = Colors.red;
});
} else {
// 當(dāng)應(yīng)用程序不在前臺時,更新顏色為綠色。
setState(() {
_color = Colors.green;
});
}
}
Widget build(BuildContext context) {
return Scaffold(
body: Container(
color: _color,
),
);
}
}
2.3 AppLifecycleState.inactive(非活動狀態(tài))
2.3.1 含義描述
當(dāng)應(yīng)用程序處于 inactive
狀態(tài)時,它仍然位于前臺,但不能響應(yīng)用戶交互。這可能發(fā)生在用戶從應(yīng)用程序切換到另一個應(yīng)用程序或系統(tǒng)對話框時。
2.3.2 應(yīng)用舉例
可以在此狀態(tài)下執(zhí)行一些暫停操作,例如停止定時器或保存應(yīng)用程序狀態(tài)。
下面的代碼展示了如何在應(yīng)用進(jìn)入非活動狀態(tài)時執(zhí)行特定的操作。
/// 一個用于監(jiān)視應(yīng)用程序生命周期狀態(tài)并更新計數(shù)器的組件。
class LifecycleWatcher extends StatefulWidget {
_LifecycleWatcherState createState() => _LifecycleWatcherState();
}
class _LifecycleWatcherState extends State<LifecycleWatcher> with WidgetsBindingObserver {
Timer _timer; // 用于定時更新計數(shù)器的計時器
int _counter = 0; // 用于存儲計數(shù)器的當(dāng)前值
void initState() {
super.initState();
WidgetsBinding.instance.addObserver(this);
// 在組件初始化時,將自身添加為應(yīng)用生命周期狀態(tài)的觀察者,并啟動計時器。
_startTimer();
}
void dispose() {
WidgetsBinding.instance.removeObserver(this);
_timer?.cancel();
super.dispose();
// 在組件被銷毀時,確保將自身從應(yīng)用生命周期狀態(tài)的觀察者中移除,并取消計時器以避免內(nèi)存泄漏。
}
void _startTimer() {
_timer = Timer.periodic(Duration(seconds: 1), (timer) {
setState(() {
_counter++; // 每秒更新計數(shù)器的值
});
});
}
void didChangeAppLifecycleState(AppLifecycleState state) {
if (state == AppLifecycleState.inactive) {
_timer?.cancel(); // 當(dāng)應(yīng)用程序狀態(tài)變?yōu)椴换顒訒r,取消計時器以停止計數(shù)器的更新。
} else if (state == AppLifecycleState.resumed) {
_startTimer(); // 當(dāng)應(yīng)用程序狀態(tài)變?yōu)榛謴?fù)時,重新啟動計時器以繼續(xù)更新計數(shù)器。
}
}
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Text('Counter: $_counter'), // 顯示計數(shù)器的當(dāng)前值
),
);
}
}
這個例子中,我們創(chuàng)建了一個 LifecycleWatcher 組件,它啟動了一個每秒遞增計數(shù)器的定時器。當(dāng)應(yīng)用進(jìn)入非活動狀態(tài)(AppLifecycleState.inactive)時,我們會停止定時器;當(dāng)應(yīng)用恢復(fù)到前臺(AppLifecycleState.resumed)時,我們會重新啟動定時器。
在實際的應(yīng)用中,你可能會在應(yīng)用進(jìn)入非活動狀態(tài)時執(zhí)行更復(fù)雜的操作,例如保存應(yīng)用程序狀態(tài)。
2.4 AppLifecycleState.paused(暫停狀態(tài))
2.4.1 含義描述
當(dāng)應(yīng)用程序處于 paused
狀態(tài)時,它被切換到后臺,不再可見。應(yīng)用程序可能會進(jìn)入暫停狀態(tài),例如在用戶按下Home按鈕時。
2.4.2 應(yīng)用舉例
AppLifecycleState.paused 表示應(yīng)用已被切換到后臺并且不再可見,例如用戶按下 Home 按鈕時。在這個狀態(tài)下,你可以執(zhí)行一些后臺操作,例如保存數(shù)據(jù)或關(guān)閉網(wǎng)絡(luò)連接。
下面的示例代碼中,我們創(chuàng)建一個頁面,當(dāng)應(yīng)用進(jìn)入暫停狀態(tài)時,保存一些數(shù)據(jù)。
/// 一個用于監(jiān)視應(yīng)用程序生命周期狀態(tài)并在應(yīng)用程序暫停時保存數(shù)據(jù)的組件。
class LifecycleWatcher extends StatefulWidget {
_LifecycleWatcherState createState() => _LifecycleWatcherState();
}
class _LifecycleWatcherState extends State<LifecycleWatcher> with WidgetsBindingObserver {
String _dataToSave = 'Some data'; // 用于保存的數(shù)據(jù)
void initState() {
super.initState();
WidgetsBinding.instance.addObserver(this);
// 在組件初始化時,將自身添加為應(yīng)用生命周期狀態(tài)的觀察者。
}
void dispose() {
WidgetsBinding.instance.removeObserver(this);
super.dispose();
// 在組件被銷毀時,確保將自身從應(yīng)用生命周期狀態(tài)的觀察者中移除。
}
Future<void> _saveData() async {
// 模擬保存數(shù)據(jù)的操作,例如將數(shù)據(jù)寫入存儲或云端
await Future.delayed(Duration(seconds: 2));
print('Data saved: $_dataToSave'); // 打印保存的數(shù)據(jù)
}
void didChangeAppLifecycleState(AppLifecycleState state) {
if (state == AppLifecycleState.paused) {
// 當(dāng)應(yīng)用程序狀態(tài)變?yōu)闀和r,觸發(fā)數(shù)據(jù)保存操作。
_saveData();
}
}
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Text('App lifecycle demo'), // 顯示應(yīng)用程序生命周期演示的文本
),
);
}
}
2.5 AppLifecycleState.detached(分離狀態(tài))
2.5.1 含義描述
這是應(yīng)用程序的初始狀態(tài),或者在應(yīng)用程序啟動之前的狀態(tài)。在此狀態(tài)下,應(yīng)用程序尚未啟動或已經(jīng)被銷毀。
2.5.2 應(yīng)用舉例
AppLifecycleState.detached 表示應(yīng)用程序尚未啟動或已經(jīng)被銷毀。在此狀態(tài)下通常不需要執(zhí)行特定的操作,因為應(yīng)用程序尚未啟動。你可以在應(yīng)用程序啟動時執(zhí)行初始化操作。
下面是一個具體的例子,我們創(chuàng)建一個頁面,當(dāng)應(yīng)用進(jìn)入分離狀態(tài)時,我們會打印一條消息:
/// 一個用于監(jiān)視應(yīng)用程序生命周期狀態(tài)并在應(yīng)用程序進(jìn)入“detached”狀態(tài)時進(jìn)行記錄的組件。
class LifecycleWatcher extends StatefulWidget {
_LifecycleWatcherState createState() => _LifecycleWatcherState();
}
class _LifecycleWatcherState extends State<LifecycleWatcher> with WidgetsBindingObserver {
void initState() {
super.initState();
WidgetsBinding.instance.addObserver(this);
// 在組件初始化時,將自身添加為應(yīng)用生命周期狀態(tài)的觀察者。
}
void dispose() {
WidgetsBinding.instance.removeObserver(this);
super.dispose();
// 在組件被銷毀時,確保將自身從應(yīng)用生命周期狀態(tài)的觀察者中移除。
}
void didChangeAppLifecycleState(AppLifecycleState state) {
if (state == AppLifecycleState.detached) {
// 當(dāng)應(yīng)用程序狀態(tài)變?yōu)椤癲etached”時,記錄應(yīng)用程序處于“detached”狀態(tài)。
print('App is in detached state');
}
}
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Text('App lifecycle demo'), // 顯示應(yīng)用程序生命周期演示的文本
),
);
}
}
代碼中,我們創(chuàng)建了一個 LifecycleWatcher 組件,當(dāng)應(yīng)用進(jìn)入分離狀態(tài)(AppLifecycleState.detached)時,我們會打印一條消息。
在實際的應(yīng)用中,你可能會在應(yīng)用進(jìn)入分離狀態(tài)時執(zhí)行更復(fù)雜的操作,例如釋放資源或清理緩存。但需要指出的是,由于在分離狀態(tài)下,應(yīng)用程序可能已經(jīng)被銷毀,所以在這個狀態(tài)下執(zhí)行的操作應(yīng)該是非常有限的。
3. 監(jiān)聽生命周期狀態(tài)的變化
此外,可以添加一個 WidgetsBindingObserver 來監(jiān)聽生命周期狀態(tài)的變化。例如,可以在應(yīng)用程序進(jìn)入后臺時保存一些數(shù)據(jù),或者在應(yīng)用程序恢復(fù)到前臺時更新UI。
class MyObserver extends WidgetsBindingObserver {
void didChangeAppLifecycleState(AppLifecycleState state) {
if (state == AppLifecycleState.paused) {
// App在后臺
// ...
} else if (state == AppLifecycleState.resumed) {
// 應(yīng)用程序在前臺
// ...
}
}
}
// Add the observer
WidgetsBinding.instance.addObserver(MyObserver());
下面是一個完整的示例,演示如何使用 WidgetsBinding.instance.lifecycleState
屬性和 WidgetsBindingObserver
來監(jiān)聽?wèi)?yīng)用程序的生命周期狀態(tài)變化:文章來源:http://www.zghlxwxcb.cn/news/detail-737246.html
import 'package:flutter/material.dart';
class MyObserver extends WidgetsBindingObserver {
void didChangeAppLifecycleState(AppLifecycleState state) {
if (state == AppLifecycleState.paused) {
// 應(yīng)用程序進(jìn)入后臺
print("App is in the background");
// 在這里可以執(zhí)行保存數(shù)據(jù)、停止定時器等后臺操作
} else if (state == AppLifecycleState.resumed) {
// 應(yīng)用程序進(jìn)入前臺
print("App is in the foreground");
// 在這里可以執(zhí)行恢復(fù)UI、啟動定時器等前臺操作
}
}
}
class MyApp extends StatelessWidget {
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text("App Lifecycle Example"),
),
body: Center(
child: Text("Hello, Flutter!"),
),
),
);
}
void didChangeDependencies() {
super.didChangeDependencies();
// 在這里添加觀察者,監(jiān)聽?wèi)?yīng)用程序生命周期變化
WidgetsBinding.instance.addObserver(MyObserver());
}
}
void main() {
runApp(MyApp());
}
這個示例演示了如何使用 WidgetsBinding
和 WidgetsBindingObserver
來監(jiān)聽?wèi)?yīng)用程序的生命周期狀態(tài)變化,并根據(jù)不同的狀態(tài)執(zhí)行相應(yīng)的操作。你可以根據(jù)應(yīng)用程序的需求在不同的生命周期狀態(tài)下執(zhí)行自定義操作。文章來源地址http://www.zghlxwxcb.cn/news/detail-737246.html
F. AppLifecycleState 枚舉源碼(帶中文注釋)
/// 表示應(yīng)用程序在運(yùn)行時可能存在的狀態(tài)。
///
/// 當(dāng)平臺不支持的狀態(tài)在支持的狀態(tài)之間轉(zhuǎn)換時,框架會合成這些狀態(tài),以使所有實現(xiàn)共享相同的狀態(tài)機(jī)。
///
/// 狀態(tài)的初始值為[detached]狀態(tài),一旦從平臺接收到第一個生命周期更新,通常會更新為[resumed]狀態(tài)。
///
/// 基于歷史和名稱沖突的原因,F(xiàn)lutter的應(yīng)用程序狀態(tài)名稱與所有平臺上的狀態(tài)名稱并不一一對應(yīng)。例如,在Android上,當(dāng)操作系統(tǒng)調(diào)用
/// [`Activity.onPause`](https://developer.android.com/reference/android/app/Activity#onPause()) 時,F(xiàn)lutter將進(jìn)入[inactive]
/// 狀態(tài),但當(dāng)Android調(diào)用
/// [`Activity.onStop`](https://developer.android.com/reference/android/app/Activity#onStop()) 時,F(xiàn)lutter將進(jìn)入[paused]狀態(tài)。
/// 請參閱各個狀態(tài)的文檔,了解它們在每個平臺上的含義。
///
/// 當(dāng)前應(yīng)用程序狀態(tài)可以從[SchedulerBinding.instance.lifecycleState]獲取,狀態(tài)的更改可以通過創(chuàng)建[AppLifecycleListener]來觀察,也可以通過
/// 使用[WidgetsBindingObserver]通過覆蓋[WidgetsBindingObserver.didChangeAppLifecycleState]方法來觀察。
///
/// 應(yīng)用程序不應(yīng)依賴于始終接收到所有可能的通知。
///
/// 例如,如果應(yīng)用程序使用任務(wù)管理器被終止,接收到終止信號,用戶斷開設(shè)備電源,或者設(shè)備發(fā)生快速的非計劃拆卸,那么在應(yīng)用程序突然終止之前將不會發(fā)送任何通知,某些狀態(tài)可能會被跳過。
///
/// 另請參閱:
///
/// * [AppLifecycleListener],用于觀察生命周期狀態(tài)變化的對象。
/// * [WidgetsBindingObserver],用于從小部件層觀察生命周期狀態(tài)的機(jī)制。
/// * iOS的[IOKit活動生命周期](https://developer.apple.com/documentation/uikit/app_and_environment/managing_your_app_s_life_cycle?language=objc)
/// 文檔。
/// * Android的[活動生命周期](https://developer.android.com/guide/components/activities/activity-lifecycle)
/// 文檔。
/// * macOS的[AppKit活動生命周期](https://developer.apple.com/documentation/appkit/nsapplicationdelegate?language=objc)
/// 文檔。
enum AppLifecycleState {
/// 應(yīng)用程序仍由Flutter引擎托管,但已分離,不附加到任何宿主視圖。
///
/// 在初始化之前,應(yīng)用程序默認(rèn)處于此狀態(tài),并且可以在所有視圖都已分離后(僅限Android和iOS)處于此狀態(tài)。
///
/// 當(dāng)應(yīng)用程序處于此狀態(tài)時,引擎正在運(yùn)行,但沒有視圖。
///
/// 只有在iOS和Android上進(jìn)入此狀態(tài),盡管在所有平臺上在應(yīng)用程序開始運(yùn)行之前它是默認(rèn)狀態(tài)。
detached,
/// 在所有平臺上,此狀態(tài)表示應(yīng)用程序處于具有輸入焦點并可見的運(yùn)行應(yīng)用程序的默認(rèn)運(yùn)行模式。
///
/// 在Android上,此狀態(tài)對應(yīng)于Flutter宿主視圖具有焦點([`Activity.onWindowFocusChanged`](https://developer.android.com/reference/android/app/Activity#onWindowFocusChanged(boolean)) 傳遞為true),
/// 同時處于Android的"resumed"狀態(tài)。如果應(yīng)用程序失去焦點([`Activity.onWindowFocusChanged`](https://developer.android.com/reference/android/app/Activity#onWindowFocusChanged(boolean))
/// 傳遞為false),但尚未調(diào)用[`Activity.onPause`](https://developer.android.com/reference/android/app/Activity#onPause()),則Flutter應(yīng)用程序可能處于[inactive]狀態(tài)。
///
/// 在iOS和macOS上,這對應(yīng)于應(yīng)用程序在前臺活動狀態(tài)運(yùn)行。
resumed,
/// 應(yīng)用程序的至少一個視圖可見,但沒有輸入焦點。應(yīng)用程序在其他方面正常運(yùn)行。
///
/// 在非Web桌面平臺上,這對應(yīng)于處于非前臺的應(yīng)用程序,但仍具有可見的窗口。
///
/// 在Web上,這對應(yīng)于在沒有輸入焦點的窗口或選項卡中運(yùn)行的應(yīng)用程序。
///
/// 在iOS和macOS上,此狀態(tài)對應(yīng)于在前臺不活動狀態(tài)運(yùn)行的Flutter宿主視圖。當(dāng)在通話時,響應(yīng)TouchID請求,進(jìn)入應(yīng)用程序切換器或控制中心,或UIViewController托管Flutter應(yīng)用程序正在過渡時,應(yīng)用程序會轉(zhuǎn)換到此狀態(tài)。
///
/// 在Android上,這對應(yīng)于在Android的暫停狀態(tài)下運(yùn)行的Flutter宿主視圖(即已調(diào)用[`Activity.onPause`](https://developer.android.com/reference/android/app/Activity#onPause())),
/// 或在Android的"resumed"狀態(tài)下運(yùn)行的Flutter宿主視圖,但沒有窗口焦點。應(yīng)用程序轉(zhuǎn)換到此狀態(tài)的示例包括應(yīng)用程序部分被遮擋,或者其他活動被關(guān)注,分屏上運(yùn)行的應(yīng)用程序不是當(dāng)前應(yīng)用程序,被電話呼叫中斷的應(yīng)用程序,畫中畫應(yīng)用程序,系統(tǒng)對話框,其他視圖。
/// 當(dāng)通知窗口遮擋或應(yīng)用程序切換器可見時,它也將處于不活動狀態(tài)。
///
/// 在Android和iOS上,處于此狀態(tài)的應(yīng)用程序應(yīng)該假定它們隨時可能被[hidden]和[paused]。
inactive,
/// 應(yīng)用程序的所有視圖都隱藏,這可能是因為應(yīng)用程序即將被暫停(在iOS和Android上),或者因為應(yīng)用程序已被最小化或放在不可見的桌面上(在非Web桌面上),
/// 或者因為應(yīng)用程序在不可見的窗口或選項卡中運(yùn)行(在Web上)。
///
/// 為了使所有平臺上的狀態(tài)機(jī)保持一致,當(dāng)從[inactive]狀態(tài)切換到[paused]狀態(tài)之前,合成了一個過渡狀態(tài),在從[paused]狀態(tài)切換到[inactive]狀態(tài)之前也是如此。這允許跨平臺實現(xiàn)只編寫一個處理程序,用于知道應(yīng)用程序何時在概念上是"隱藏"的。
hidden,
/// 應(yīng)用程序當(dāng)前不可見給用戶,并且不響應(yīng)用戶輸入。
///
/// 當(dāng)應(yīng)用程序處于此狀態(tài)時,引擎不會調(diào)用[PlatformDispatcher.onBeginFrame]和[PlatformDispatcher.onDrawFrame]回調(diào)。
///
/// 只有在iOS和Android上進(jìn)入此狀態(tài)。
paused,
}
到了這里,關(guān)于Flutter筆記:Flutter的應(yīng)用生命周期狀態(tài)(lifecycleState)管理的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!