87 lines
2.2 KiB
Dart
87 lines
2.2 KiB
Dart
// Author: fengshengxiong
|
||
// Date: 2024/6/25
|
||
// Description: 应用程序生命周期反应器
|
||
|
||
import 'dart:ui';
|
||
|
||
import 'package:flutter/material.dart';
|
||
import 'package:flutter_translate/ads/interstitial_ad_manage.dart';
|
||
import 'package:flutter_translate/common/utils/log_utils.dart';
|
||
|
||
class AppLifecycleReactor {
|
||
AppLifecycleReactor._();
|
||
|
||
static final AppLifecycleReactor _instance = AppLifecycleReactor._();
|
||
|
||
factory AppLifecycleReactor() {
|
||
return _instance;
|
||
}
|
||
|
||
AppLifecycleListener? appLifecycleListener;
|
||
|
||
void listenToAppStateChanges() {
|
||
appLifecycleListener = AppLifecycleListener(
|
||
onStateChange: onStateChange,
|
||
onResume: onResume,
|
||
onInactive: onInactive,
|
||
onHide: onHide,
|
||
onShow: onShow,
|
||
onPause: onPause,
|
||
onRestart: onRestart,
|
||
onDetach: onDetach,
|
||
onExitRequested: onExitRequested,
|
||
);
|
||
}
|
||
|
||
/// 监听状态
|
||
onStateChange(AppLifecycleState state) {
|
||
Log.d('app_state:$state');
|
||
}
|
||
|
||
/// 可见,并且可以响应用户操作时的回调
|
||
/// 比如应用从后台调度到前台时,在 onShow() 后面 执行
|
||
/// 注意:这个回调,初始化时 不执行
|
||
onResume() {
|
||
Log.d('---onResume');
|
||
}
|
||
|
||
/// 可见,但无法响应用户操作时的回调
|
||
onInactive() {
|
||
Log.d('---onInactive');
|
||
}
|
||
|
||
/// 隐藏时的回调
|
||
onHide() {
|
||
Log.d('---onHide');
|
||
}
|
||
|
||
/// 显示时的回调,应用从后台调度到前台时
|
||
onShow() {
|
||
Log.d('---onShow');
|
||
InterstitialAdManager().showAdIfReady(InterstitialAdManager().adIds[0]);
|
||
}
|
||
|
||
/// 暂停时的回调
|
||
onPause() {
|
||
Log.d('---onPause');
|
||
}
|
||
|
||
/// 暂停后恢复时的回调
|
||
onRestart() {
|
||
Log.d('---onRestart');
|
||
}
|
||
|
||
/// 这两个回调,不是所有平台都支持,
|
||
|
||
/// 当退出 并将所有视图与引擎分离时的回调(IOS 支持,Android 不支持)
|
||
onDetach() {
|
||
Log.d('---onDetach');
|
||
}
|
||
|
||
/// 在退出程序时,发出询问的回调(IOS、Android 都不支持)
|
||
/// 响应 [AppExitResponse.exit] 将继续终止,响应 [AppExitResponse.cancel] 将取消终止。
|
||
Future<AppExitResponse> onExitRequested() async {
|
||
Log.d('---onExitRequested');
|
||
return AppExitResponse.exit;
|
||
}
|
||
} |