我是靠谱客的博主 霸气缘分,最近开发中收集的这篇文章主要介绍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 app初始化sdk,Android-使用ContentProvider来初始化你的sdk(一)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部