# 宿主生命周期扩展 | Yuki Hook API
一个使用 Kotlin 构建的高效 Hook API 与 Xposed 模块解决方案

# # 宿主生命周期扩展

> 这是一个自动 Hook 宿主 APP 生命周期的扩展功能。

## # 监听生命周期

> 通过自动化 Hook 宿主 APP 的生命周期方法，来实现监听功能。

我们需要监听宿主 `Application` 的启动和生命周期方法，只需要使用以下方式实现。

> 示例如下

    loadApp(name = "com.example.demo") {
        // 注册生命周期监听
        // 可选参数：你可以设置 isOnFailureThrowToApp = false 使得其中的异常不会抛出给宿主防止宿主崩溃，默认为 true
        onAppLifecycle(isOnFailureThrowToApp = true) {
            // 你可以在这里实现 Application 中的生命周期方法监听
            attachBaseContext { baseContext, hasCalledSuper ->
                // 通过判断 hasCalledSuper 来确定是否已执行 super.attachBaseContext(base) 方法
                // ...
            }
            onCreate {
                // 通过 this 得到当前 Application 实例
                // ...
            }
            onTerminate {
                // 通过 this 得到当前 Application 实例
                // ...
            }
            onLowMemory {
                // 通过 this 得到当前 Application 实例
                // ...
            }
            onTrimMemory { self, level ->
                // 可在这里判断 APP 是否已切换到后台
                if (level == ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN) {
                    // ...
                }
                // ...
            }
            onConfigurationChanged { self, config ->
                // ...
            }
        }
    }

小提示

更多功能请参考 AppLifecycle。

## # 注册系统广播

> 通过 `Application.onCreate` 方法注册系统广播，来实现对系统广播的监听。

我们还可以在宿主 `Application` 中注册系统广播。

> 示例如下

    loadApp(name = "com.example.demo") {
        // 注册生命周期监听
        onAppLifecycle {
            // 注册用户解锁时的广播监听
            registerReceiver(Intent.ACTION_USER_PRESENT) { context, intent ->
                // ...
            }
            // 注册多个广播监听，会同时回调多次
            registerReceiver(Intent.ACTION_PACKAGE_CHANGED, Intent.ACTION_TIME_TICK) { context, intent ->
                // ...
            }
        }
    }

小提示

更多功能请参考 AppLifecycle。