Native lifecycle functions that support iOS and Android, different from WidgetBindings that come with Flutter Android/IOS native life cycle

  • 原生的生命周期函数,支持 iOS 和 Android,不同于 flutter 中自带的 WidgetBindings Android/IOS原生生命周期

android 生命周期

  • ON_CREATE onCreate
  • ON_START onStart
  • ON_RESTART onRestart
  • ON_RESUME onResume
  • ON_STOP onStop
  • ON_PAUSE onPause
  • ON_DESTROY onestroy

ios生命周期

  • DID_FINISH_LAUNCHING_WITH_OPTIONS didFinishLaunchingWithOptions
  • APPLICATION_WILL_RESIGN_ACTIVE applicationWillResignActive
  • APPLICATION_DID_ENTER_BACKGROUND applicationDidEnterBackground
  • APPLICATION_WILL_ENTER_FOREGROUND applicationWillEnterForeground
  • APPLICATION_DID_BECOME_ACTIVE applicationDidBecomeActive
  • APPLICATION_WILL_TERMINATE applicationWillTerminate

注册生命周期函数

  • (android) AppLifeManage.registerLife(AppLifeManage.LifeEnum.ON_CREATE);

  • (ios) AppLifePlugin registerLife:DID_FINISH_LAUNCHING_WITH_OPTIONS;

  • android

public class MainActivity extends FlutterActivity {
    private  static String TAG=MainActivity.class.getName();

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //注册对应的生命周期函数
        AppLifeManage.registerLife(AppLifeManage.LifeEnum.ON_CREATE);
        Log.e(TAG, "onCreate: " );
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        Log.e(TAG, "onRestart: ");
        AppLifeManage.registerLife(AppLifeManage.LifeEnum.ON_RESTART);
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.e(TAG, "onResume: ");
        AppLifeManage.registerLife(AppLifeManage.LifeEnum.ON_RESUME);
    }
}
  • ios
  • 引入头文件 #import "AppLifePlugin.h"
@implementation AppDelegate
 /**
 应用创建
 */
- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  [GeneratedPluginRegistrant registerWithRegistry:self];
  // Override point for customization after application launch.
    NSLog(@"%@", @"didFinishLaunchingWithOptions: 应用创建");
    [AppLifePlugin registerLife:DID_FINISH_LAUNCHING_WITH_OPTIONS];
  return [super application:application didFinishLaunchingWithOptions:launchOptions];
}

/**
 应用从活动状态进入非活动状态,如从应用切换到桌面
 */
- (void)applicationWillResignActive:(UIApplication *)application{
    NSLog(@"%@", @"applicationWillResignActive:应用从活动状态进入非活动状态");
    [AppLifePlugin registerLife:APPLICATION_WILL_RESIGN_ACTIVE];
}

/**
 应用处于后台
 */
- (void)applicationDidEnterBackground:(UIApplication *)application{
    NSLog(@"%@", @"applicationDidEnterBackground:应用处于后台");
    [AppLifePlugin registerLife:APPLICATION_DID_ENTER_BACKGROUND];
}

/**
 应用进入前台,但还没有处于活动状态
 */
- (void)applicationWillEnterForeground:(UIApplication *)application{
    NSLog(@"%@", @"applicationWillEnterForeground:应用进入前台,但还没有处于活动状态");
    [AppLifePlugin registerLife:APPLICATION_WILL_ENTER_FOREGROUND];
}
/**
 应用处于前台并且活动状态
 */
- (void)applicationDidBecomeActive:(UIApplication *)application{
    NSLog(@"%@", @"applicationDidBecomeActive: 应用处于前台并且活动状态");
    [AppLifePlugin registerLife:APPLICATION_DID_BECOME_ACTIVE];
}

/**
 应用终止,销毁
 */
- (void)applicationWillTerminate:(UIApplication *)application{
    NSLog(@"%@", @"applicationWillTerminate:应用终止,销毁");
    [AppLifePlugin registerLife:APPLICATION_WILL_TERMINATE];
}
@end
  • flutter
  • 1)with LifeManageCall
  • 2) @override void initState() { super.initState(); LifeManage.instance!.addObserver(this); }
class WithTestPage extends StatefulWidget {
  const WithTestPage({Key? key}) : super(key: key);

  @override
  _WithTestPageState createState() => _WithTestPageState();
}

class _WithTestPageState extends State<WithTestPage> with LifeManageCall {
  @override
  void initState() {
    super.initState();
    LifeManage.instance!.addObserver(this);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: const Text('WithTest'),
        ),
        body: Center(
          child: Column(),
        ));
  }

  @override
  void onCreate() {
    print("onCreate=============");
  }

  @override
  void onRestart() {
    print("onRestart=============");
  }

  @override
  void applicationDidBecomeActive() {
    print("applicationDidBecomeActive=============");
  }

  @override
  void applicationDidEnterBackground() {
    print("applicationDidEnterBackground=============");
  }
}