Android 原生插件内注册 application 生命周期钩子
使用场景
- 某些 sdk 可能要求初始化必须在Application.onCreate函数中主线程内调用
- 可能需要通过registerActivityLifecycleCallbacks监听应用前后台切换
配置准备
debugSaaAVersion
要更新到1.0.7
及以上版本 (对应最小Android Sdk Version 为1.3.28
)
开发流程
1.继承NativePluginApplicationInterface
参考下面代码
package com.donut.xxx
import android.app.Activity
import android.app.Application
import android.os.Bundle
import com.tencent.luggage.wxa.SaaA.plugin.NativePluginApplicationInterface
class TestNativePluginApplication: NativePluginApplicationInterface {
private val TAG = "TestNativePluginApplication"
override fun getPluginID(): String {
android.util.Log.e(TAG, "getPluginID")
return BuildConfig.PLUGIN_ID
}
override fun onCreate(application: Application) {
android.util.Log.e(TAG, "oncreate!")
application.registerActivityLifecycleCallbacks(object: Application.ActivityLifecycleCallbacks {
override fun onActivityCreated(p0: Activity, p1: Bundle?) {
android.util.Log.e(TAG, "onActivityCreated")
}
override fun onActivityStarted(p0: Activity) {
android.util.Log.e(TAG, "onActivityStarted")
}
override fun onActivityResumed(p0: Activity) {
android.util.Log.e(TAG, "onActivityResumed")
}
override fun onActivityPaused(p0: Activity) {
android.util.Log.e(TAG, "onActivityPaused")
}
override fun onActivityStopped(p0: Activity) {
android.util.Log.e(TAG, "onActivityStopped")
}
override fun onActivitySaveInstanceState(p0: Activity, p1: Bundle) {
android.util.Log.e(TAG, "onActivitySaveInstanceState")
}
override fun onActivityDestroyed(p0: Activity) {
android.util.Log.e(TAG, "onActivityDestroyed")
}
})
}
}
2.配置接口实现类
在 plugin/src/main/resources/META-INF/services/
目录下新建文件com.tencent.luggage.wxa.SaaA.plugin.NativePluginApplicationInterface
文件内容配置NativePluginApplicationInterface
接口实现类的路径,如下图所示
3.开始测试
- 查看
DemoApplication
文件(/app/src/main/java/com/tencent/weauth/DemoApplication.kt
) - 确认
onCreate
函数里 是否执行api.runWhenApplicationOnCreate
- 如果没有这段代码,可手动补一下
override fun onCreate() {
super.onCreate()
try {
val api = SaaAApi.Factory.getApi()
if (api != null) {
// 如果您的插件需要使用 application 生命周期钩子,请把以下注释打开且保证 debugSaaAVersion >= 1.0.7
api.runWhenApplicationOnCreate(this)
}
} catch (e: Exception) {
e.printStackTrace()
}
}
4.构建插件上传后在云构建时使用
参考 Android 原生插件开发指引的上传章节即可