IOC 控制反转Android 事件依赖注入 ( 事件三要素 | 修饰注解的注解 | 事件依赖注入步骤 )
Posted 韩曙亮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IOC 控制反转Android 事件依赖注入 ( 事件三要素 | 修饰注解的注解 | 事件依赖注入步骤 )相关的知识,希望对你有一定的参考价值。
总结
Android 依赖注入的核心就是通过反射获取 类 / 方法 / 字段 上的注解 , 以及注解属性 ; 在 Activity 基类中 , 获取该注解 以及 注解属性 , 进行相关操作 ;
一、android 事件设置三要素
根据以下设置组件点击事件的代码 , 分析事件注入的要素 :
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
-
点击事件 : 设置点击事件 , 需要调用
View.setOnClickListener
方法进行设置 ; -
监听器类型 : 设置监听器类型 , 一般是
View.OnClickListener
; -
事件触发回调方法 : 事件触发后的回调方法 , 原型为
public void onClick(View v)
;
为了兼容各种事件注入 , 如长按事件 , 上述事件设置三要素分别是
- 点击事件 :
View.setOnLongClickListener
- 监听器类型 :
View.OnLongClickListener
- 事件触发回调方法 :
public boolean onLongClick(View v)
textView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
return false;
}
如果要兼容各种不同的事件 , 就需要定义不同的注解 , 这里引入一个修饰注解的注解 , 为不同的时间注入注解进行配置 ;
二、修饰注解的注解
在 Java Web 开发中 , 经常使用注解进行相关配置 , 如 Spring ;
配置 EventBase
注解 , 用于修改事件注入的注解 , 点击事件与长按事件 , 都要使用下面的 EventBase
注解进行修饰 , 只是事件设置
3
3
3 要素设置不同 ;
package kim.hsl.ioc_lib;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 自定义注解
* 用于注解上的注解
* 用于依赖注入视图
*/
@Target(ElementType.ANNOTATION_TYPE) // 该注解作用于注解上
@Retention(RetentionPolicy.RUNTIME) // 注解保留到运行时
public @interface EventBase {
/**
* 设置事件监听的方法
* @return
*/
String listenerSetter();
/**
* 设置监听器类型
* @return
*/
Class<?> listenerType();
/**
* 事件触发后的回调方法
* @return
*/
String callbackMethod();
}
使用上述注解修饰 OnClick
注解 :
package kim.hsl.ioc_lib;
import android.view.View;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 自定义注解
* 用于依赖注入视图
*/
@Target(ElementType.METHOD) // 该注解作用于方法上
@Retention(RetentionPolicy.RUNTIME) // 注解保留到运行时
@EventBase(
listenerSetter = "setOnClickListener",
listenerType = View.OnClickListener.class,
callbackMethod = "onClick")
public @interface OnClick {
int[] value(); // 接收 int 类型数组
}
三、Android 事件依赖注入步骤
Android 事件依赖注入步骤 :
- ① 声明注解 : 声明视图注入注解
OnClick
; - ② 声明修饰注解的注解 : 声明修饰注解的注解
EventBase
, 用于配置事件 3 3 3 要素 ; - ② 客户端 Activity : 定义
MainActivity
, 继承BaseActivity
, 在方法上使用@OnClick
注解注入视图点击事件 ; - ③ IOC 库中的 Activity 父类 : 定义
BaseActivity
, 在BaseActivity
中的onCreate
方法中 , 处理依赖注入相关逻辑 ; - ④ 依赖注入逻辑 : 获取
Activity
类 , 并使用反射获取类中的所有属性字段 , 获取所有的@OnClick
和@EventBase
注解 , 如果找到该注解 , 执行setOnClickListener
设置视图组件对象的点击方法 ;
以上是关于IOC 控制反转Android 事件依赖注入 ( 事件三要素 | 修饰注解的注解 | 事件依赖注入步骤 )的主要内容,如果未能解决你的问题,请参考以下文章
IOC 控制反转Android 事件依赖注入 ( 事件依赖注入具体的操作细节 | 获取要注入事件的 View 对象 | 通过反射获取 View 组件的事件设置方法 )
IOC 控制反转Android 事件依赖注入 ( 事件依赖注入具体的操作细节 | 创建 事件监听器 对应的 动态代理 | 动态代理的数据准备 | 创建调用处理程序 | 创建动态代理实例对象 )(代码片
IOC 控制反转Android 事件依赖注入 ( 事件依赖注入具体的操作细节 | 获取 Activity 中的所有方法 | 获取方法上的注解 | 获取注解上的注解 | 通过注解属性获取事件信息 )(代
IOC 控制反转Android 布局依赖注入 ( 布局依赖注入步骤 | 布局依赖注入代码示例 )