宿主生命周期扩展

这是一个自动 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