DBHelper模块
刚开始想用模板方法和继承来做,将CRUD的实现放在宿主中,
但是, 由于用户不太清楚sdk内部实现逻辑,用户维护sdk的成本太高.所以,我就重新裁剪了开源的XUtils中的dbUtils...在本SDK中,采用串行模式,在初始化过程中,SQLiteDatabase静态单例, 来保证线程安全.
项目经过测试部门,和线上检验,线程间访问正确,数据统计正确....而且TimerTask是在子线程中,不会push服务不会阻塞主线程.
sdk整体框架调整
访问权限
sdk 对外暴露类和方法,要尽可能少.只暴露用户可操作的方法.隐藏其他细节....后期,在我们做自己的业务线的时候,大家也可以采用这种方法.
sdk生成,版本管理,混淆打包
自己在gradle中写了一个打包脚本,让打包的过程,自动化.详情见源码.
1task release_jj_analytics_lib_aar...**
2-keep class com.ccj.client.android.analytics.**{*;}
总结思考
在本sdk中,由于所有动作的生命周期,是全局周期,所以,选择了sdk持有applicatin