make 之后实现接口:
class CountServiceImpl : IMyAidlInterface.Stub() {
override fun getCount(): Int {
println(“Server: getCount”)
return 100
}
}
ContentProvider定义
接着注册并定义一个运行在服务端进程的 ContentProvider 对象:
class BinderProvider : ContentProvider() {
override fun onCreate(): Boolean = true
override fun query(
uri: Uri, projection: Array?, selection: String?, selectionArgs: Array?, sortOrder: String?
): Cursor {
return BinderCursor.binderCursor
}
override fun getType(uri: Uri): String? = null
override fun insert(uri: Uri, values: ContentValues?): Uri? = null
override fun delete(uri: Uri, selection: String?, selectionArgs: Array?): Int = 0
override fun update(uri: Uri, values: ContentValues?, selection: String?, selectionArgs: Array?): Int = 0
}
这里 query 方法中返回的 Cursor 对象是一个 BinderCursor.binderCursor, BinderCursor 继承自 MatrixCursor 类,其内保存有服务端 Binder 对象:
class BinderCursor private constructor() : MatrixCursor(arrayOf(“service”)) {
companion object {
private const val KEY_BINDER_COUNT = “key_binder_count”
val binderCursor = BinderCursor()
fun getCountService(cursor: Cursor?): IBinder? {
return cursor?.extras?.getBinder(KEY_BINDER_COUNT)
}
}
private val mBinderExtra = Bundle()
init {
mBinderExtra.putBinder(KEY_BINDER_COUNT, CountServiceImpl())
}
override fun getExtras(): Bundle {
return mBinderExtra
}
}
然后在 Manifest 中注册:
Client进程
客户端进程通过以下方法可以获取到 Binder 代理对象,并远程调用服务端接口:
val cursor = contentResolver.query(Uri.parse(“content://com.hearing.binder.demo”), null, null, null, null)
try {
val service = IMyAidlInterface.Stub.asInterface(BinderCursor.getCountService(cursor))
println(“Client: ${service?.count}”)
} catch (e: Exception) {
e.printStackTrace()
} finally {
cursor?.close()
}
总结
其实要轻松掌握很简单,要点就两个:
- 找到一套好的视频资料,紧跟大牛梳理好的知识框架进行学习。
- 多练。 (视频优势是互动感强,容易集中注意力)
你不需要是天才,也不需要具备强悍的天赋,只要做到这两点,短期内成功的概率是非常高的。
对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。
以上就是总结的关于在面试的一些总结,希望对大家能有些帮助,除了这些面试中需要注意的问题,当然最重要的就是刷题了,这里放上我之前整理的一份超全的面试专题PDF
还有 高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。
【Android核心高级技术PDF文档,BAT大厂面试真题解析】
这里只是整理出来的部分面试题,后续会持续更新,希望通过这些高级面试题能够降低面试Android岗位的门槛,让更多的Android工程师理解Android系统,掌握Android系统。喜欢的话麻烦点击一个喜欢在关注一下~
加入社区》https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0
解Android系统,掌握Android系统。喜欢的话麻烦点击一个喜欢在关注一下~
加入社区》https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0