通过Hook AMS + APT实现集中式登录
效果如下:
优势:
- 以非侵入性的方式将分散的登录判断逻辑集中处理,减少了代码量,提高了开发效率。
- 增加或删除目标页面时无需修改判断逻辑,只需增加或删除其对应注解即可,符合开闭原则,降低了耦合度
- 在用户登录成功后直接跳转到目标界面,保证了用户操作不被中断。
使用:
1,添加依赖
allprojects {
repositories {
maven { url 'https://www.jitpack.io' }
}
}
dependencies {
implementation 'com.github.wdsqjq.AndLogin:lib:1.0.0'
kapt 'com.github.wdsqjq.AndLogin:apt_processor:1.0.0'
}
2,给需要登录的Activity添加注解
@RequireLogin
class TargetActivity1 : AppCompatActivity() {
...
}
@RequireLogin
class TargetActivity2 : AppCompatActivity() {
...
}
3,给登录Activity添加注解
@LoginActivity
class LoginActivity : AppCompatActivity() {
...
}
4,提供判断是否登录的方法
需要是一个静态方法
@LoginActivity
class LoginActivity : AppCompatActivity() {
companion object {
// 该方法用于返回是否登录
@JudgeLogin
@JvmStatic
fun checkLogin(): Boolean {
return SpUtil.isLogin()
}
}
}