概述
在日常Android开发中经常会写一些sdk来供他人或者自己调用,一般这些sdk都涉及到初始化,虽然这个初始化过程我们一般都会让调用者自己来调用完成初始化过程。但是今天我们来介绍一个不需要调用者调用sdk初始化的方法,我们自己来完成这个初始化过程。下面来介绍方法
创建Library
首先我们创建个简单的library,这个library的功能就很简单:
需要传入context
提供判断是否已初始化的函数
class LibraryClient(val context: Context) {
var isInitialized = false
init {
isInitialized = true
}
fun hasInitialized(): Boolean {
return context != null && isInitialized
}
}
class Library {
companion object {
private var client: LibraryClient? = null
@Synchronized
fun init(context: Context) {
if (this.client == null) {
client = LibraryClient(context.applicationContext)
}
}
fun isInitialized(): Boolean {
client?.let {
return client!!.hasInitialized()
}
return false
}
}
}
主角:ContentProvider
这个ContentProvider功能很简单就是在onCreate()里调用Library.init()方法,来初始化sdk
class InstallProvider: ContentProvider() {
override fun onCreate(): Boolean {
Library.init(context.applicationContext)
return true
}
override fun query(uri: Uri, projection: Array?, selection: String?, selectionArgs: Array?,
sortOrder: String?
): Cursor? {
return null
}
.....
}
android:authorities="${applicationId}.library-installer"
android:name=".InstallProvider"
android:exported="false"/>
验证
这样就结束了,我们验证下是否已经真的初始化了
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
printLibrary()
}
private fun printLibrary() {
logd("library is initialized: ${Library.isInitialized()}")
shortToast("library is initialized: ${Library.isInitialized()}")
}
}
image.png
结果显示已初始化成功,这就结束了。至于为什么可以初始化成功,我们在下一篇文章解释!
最后
以上就是霸气缘分为你收集整理的android app初始化sdk,Android-使用ContentProvider来初始化你的sdk(一)的全部内容,希望文章能够帮你解决android app初始化sdk,Android-使用ContentProvider来初始化你的sdk(一)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复