Android AOP切面编程+动态权限申请
最近在利用AspectJ做埋点,突发奇想,能否也用类似方法做动态权限申请?发现可以。我来介绍一下我的思路。
AOP是什么AOP,百度一下就知道,是 Aspect Oriented Programming,面向切面编程。怎么理解面向切面编程呢?
我用一个场景来解释一下:我们在一个项目中会有很多模块或者函数(在图中统称为任务,下同)要使用,而在进行某些任务之前,或者之后,或者进行任务的前后,这里假设是从数据库获取数据的任务,都需要做同样的某个动作,比如计算进行这个任务耗时多久。
那么这里的计算任务耗时多久,我们一般写法大概是这样的:
public void getDataFromDB(){
long beginTime = System.currentTimeMillis();
//Do something
doSomeThing();
long duration = System.currentTimeMillis() - beginTime;
Log.d(TAG,"it wasted "+duration+" millis");
}
也就是在某个任务前后加入一个时间标志,来计算这个过程的耗时情况。
但是在我们项目中可能会有很多地方需要这样的计算耗时的性能评估的方法,需要我们都要用这种方式去做。
这个时候就希望我们的计算时间差的代码能够抽离出来,而且能应用在各个需要计算耗时操作的地方。
例如我们下图中的动作A, 我们项目中的任务A、B、E、F都需要计算耗时,那么我们通过某种办法,把计算时间差的相同的代码抽离出来,作为动作A,在任务A、B、E、F调用的前后调用,进行耗时计算。
同样的,可能任务C、D、E也有需要抽出的相同代码,比如验证当前用户是否登录账号。
原创文章 22获赞 27访问量 1万+
关注
私信
展开阅读全文
作者:孤独世界的深海流浪汉
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341