作家
登录

Android模块化探索与实践

作者: 来源: 2017-05-18 13:03:07 阅读 我要评论

起首须要定义我们本身的注解(篇幅有限,这里只列出声部分源码)。

用于定义跳转 URI 的注解 FullUri:

  1. @Target(ElementType.METHOD) 
  2. @Retention(RetentionPolicy.RUNTIME) 
  3. public @interface FullUri { 
  4.     String value(); 

用于定义跳转传参的 UriParam( UriParam 注解的参数用于拼接到 URI 后面):

  1. @Target(ElementType.PARAMETER) 
  2. @Retention(RetentionPolicy.RUNTIME) 
  3. public @interface UriParam { 
  4.     String value(); 

用于定义跳转传参的 IntentExtrasParam( IntentExtrasParam 注解的参数最终经由过程 Intent 来传递):

Android模块化摸索与实践

  1. @Target(ElementType.PARAMETER) 
  2. @Retention(RetentionPolicy.RUNTIME) 
  3. public @interface IntentExtrasParam { 
  4.     String value(); 

然后实现 Router ,内部经由过程动态代劳的方法来实现 Activity 跳转:

  1. public final class Router { 
  2.     ... 
  3.     public <T> T create(final Class<T> service) { 
  4.         return (T) Proxy.newProxyInstance(service.getClassLoader(), new Class[]{service}, new InvocationHandler() { 
  5.             @Override 
  6.             public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { 
  7.                 FullUri fullUri = method.getAnnotation(FullUri.class); 
  8.                 StringBuilder urlBuilder = new StringBuilder(); 
  9.                 urlBuilder.append(fullUri.value()); 
  10.                 //获取注浇愁数 
  11.                 Annotation[][] parameterAnnotations = method.getParameterAnnotations(); 
  12.                 HashMap<String, Object> serializedParams = new HashMap<>(); 
  13.                 //拼接跳转 URI 
  14.                 int position = 0; 
  15.                 for (int i = 0; i < parameterAnnotations.length; i++) { 
  16.                     Annotation[] annotations = parameterAnnotations[i]; 

      推荐阅读

      红帽张先民博士:开源驱动企业数字化转型

    【51CTO.com原创稿件】提到Linux,我们就会想到红帽,就跟提到Windows就会想到微软一样。作为一家专注于架构平>>>详细阅读


    本文标题:Android模块化探索与实践

    地址:http://www.17bianji.com/lsqh/35300.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)