我是靠谱客的博主 霸气缘分,这篇文章主要介绍android app初始化sdk,Android-使用ContentProvider来初始化你的sdk(一),现在分享给大家,希望可以做个参考。

在日常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()}")

}

}

205ff472b67e

image.png

结果显示已初始化成功,这就结束了。至于为什么可以初始化成功,我们在下一篇文章解释!

最后

以上就是霸气缘分最近收集整理的关于android app初始化sdk,Android-使用ContentProvider来初始化你的sdk(一)的全部内容,更多相关android内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(133)

评论列表共有 0 条评论

立即
投稿
返回
顶部