fengzhizi715 / SAF-AOP

android的AOP框架,支持android studio、gradle最新版本
Apache License 2.0
262 stars 52 forks source link

@CheckLogin , 怎样可以做到拦截登录前动作,登陆后随之触发吗?(提供下思路就好) #4

Open RyanYou opened 6 years ago

RyanYou commented 6 years ago

学习了你的Router 和 AOP代码,获益良多。特别是AOP的代码。@CheckLogin这种切面, 怎样可以做到拦截登录前动作,登陆后随之触发吗?(提供下思路就好)

fengzhizi715 commented 6 years ago

hi @RyanYou , @CheckLogin是基于AOP的特性实现的,会先判断用户是否已经登录。如果没有登录则跳转到登录页面,完成登录操作之后会返回到当前的页面,再点击按钮之后才会处理App内具体的业务逻辑。 如果已经登录,则处理App内具体的业务逻辑。

你可以看一下这篇文章,包含了@CheckLogin的具体实现。 http://www.jianshu.com/p/9e78560cadad

fengzhizi715 commented 6 years ago

或者看一下@HookMethod的源码,应该就能理解@CheckLogin

RyanYou commented 6 years ago

嗯,基本明了@CheckLogin 的实现。其实我的需求是登陆后随之触发具体逻辑,不再需要点击按钮之后再实现具体逻辑。 我想只能对@CheckLogin再定义一个request code . 在onActivityResult调起后再加多一个Pointcut ... 但感觉这种实现不是最优的解决方案。

fengzhizi715 commented 6 years ago

我想到两种方法,第一种可以尝试一下这个项目中的@HookMethod,它有一个afterMethod的属性 第二种,可以在登录的网络请求成功之后,app跳转到下一个页面之前发送一个event bus的Sticky事件。

RyanYou commented 6 years ago

我这边直接在@CheckLogin登录前,直接将JoinPoint保存了。 登陆后直接拿回旧的JoinPoint 调用proceed :)