oasisfeng / condom
- среда, 29 марта 2017 г. в 03:11:48
Java
一个超轻超薄的Android工具库,阻止三方SDK中常见的严重影响用户体验的『链式唤醒』行为。(对应用自身的功能无影响)
Project Condom is a thin library to wrap the naked Context
in your Android project before passing it to the 3rd-party SDK.
It is designed to prevent the 3rd-party SDK from common unwanted behaviors which may harm the user experience of your app.
『保险套』是一个超轻超薄的Android工具库,将它套在Android应用工程里裸露的Context
上,再传入第三方SDK(通常是其初始化方法),即可防止三方SDK
中常见的损害用户体验的行为:
常见的三方SDK需要应用在启动阶段调用其初始化方法,一般包含Context
参数,例如:
XxxClient.registerXxx(context, ...);
只需将其修改为:
XxxClient.registerXxx(CondomContext.wrap(context, "XxxSDK"), ...);
其中参数tag
(上例中的"XxxSDK")为开发者根据需要指定的用于区分多个不同CondomContext
实例的标识,将出现在日志的TAG后缀。
如果只有一个CondomContext
实例,或者不需要区分,则传入null亦可。
就这样简单的一行修改,三方SDK就无法再使用这个套上了保险套的Context
去唤醒当前并没有进程在运行的其它app。
(已有进程在运行中的app仍可以被关联调用,因为不存在大量进程连锁创建的巨大资源开销,因此是被允许的。这也是Android O开始实施的限制原则)