andriod实现自己的ioc容器

AndroidCommunicator:IoC容器,用于从Android调用Web服务-开源 使用DI来帮助程序员开发调​​用Web服务的Android应用程序的容器。 客户端代码需要为将在运行时注入的服务实例添加注释。 可以在XML文件中配置这些实例,其详细信息如下:Web服务地址,类型(用于Web资源的SOAP,REST或HTTP之一),超时和用于构建请求对象以及从结果到响应对象的转换的算法。 对Web服务的调用以对API客户端透明的通用方式执行。 还提供了一个名为PhotoSpeller的演示应用程序,该应用程序用照片拼写了从用户或通过调用以下服务之一获得的文本:QuoteOfThe Day或Excuses。 这些照片是通过调用Flickr或Google图片服务获得的。 立即下载

1.需求

1.1实现自己的ioc容器,做到用注解方式为变量赋值,如下

@InjectView(R.id.text2)
    private TextView testView;

2.实现

2.1定义注解接口,其实注解就是一个数据约束,定义注解前需要知道一些注解的基本知识

@target注解作用的目标
1.CONSTRUCTOR:用于描述构造器
2.FIELD:用于描述域
3.LOCAL_VARIABLE:用于描述局部变量
4.METHOD:用于描述方法
5.PACKAGE:用于描述包
6.PARAMETER:用于描述参数
7.TYPE:用于描述类、接口(包括注解类型) 或enum声明


----------
@Retention保留时间的长短
1.SOURCE:在源文件中有效(即源文件保留)
2.CLASS:在class文件中有效(即class保留)
3.RUNTIME:在运行时有效(即运行时保留)


----------
 还有@document 和 @inherit  不怎么使用,自行查阅

package com.example.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface InjectView {

    //返回R.id.view  的int值
    public int value() default 0;

}

2.2实现使用注解为变量赋值 其实就是利用放射机制 一一赋值

package com.example.annotation;


public class InjectUtils {

    public static void injectView(Activity activity)
    {
        //1.获得activity 的class
        Class<? extends Activity> acClass = activity.getClass();
        //2.获得所有字段  因为在一个activity中不止有一个view
        Field[] acField = acClass.getDeclaredFields();

        for(Field field:acField)
        {
            //获得view的注解
            InjectView myView = field.getAnnotation(InjectView.class);
            if(null!=myView)
            {
                //获得注解中的值
                int value = myView.value();
                //根据注解中的值实例view
                View view = activity.findViewById(value);
                try {
                    field.setAccessible(true);
                    field.set(activity,view);
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                } catch (IllegalArgumentException e) {
                    e.printStackTrace();
                }
            }

        }

    }
}

2.3MainActivity,执行并赋值

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        InjectUtils.injectView(this);
    }

2.4其他,如为按钮使用注解添加单击事件也如此,不过比较复杂,需要代理。

Android-安卓架构支持敏捷开发和持续集成服务容器IOC沉浸式状态栏场景切换模拟http请求式导航 安卓架构,支持敏捷开发和持续集成,服务容器、IOC、沉浸式状态栏、场景切换、模拟http请求式导航 立即下载

相关推荐

Java轻量级IOC框架Guice

Guice是由Google大牛Bob lee开发的一款轻量级的java IoC容器。其优势在于:   速度快,号称比spring快100倍。   无外部配置(如需要使用外部可以可以选用Guice的扩展包),完全基于annotation特性,支持重构,代码静态检查。   简单,快速,基本没有学习成本。   Guice和spring各有所长,Guice更适合与嵌入式或者高性能但项目简单方案,如OSGI容器,spring更适合大型项目组织。   注入方式   在我们谈到IOC框架,首先我们的话题将是构造,属性以及函数注入方式,Guice的实现只需要在构造函数,字段,或者注入函数上标注@I

Android高级-揭秘IOC框架

什么是DIP ,IOC,DI,IOC容器 DIP Dependency inverse Principle 依赖倒置原则 强调系统的“高层组件”不应当依赖于“底层组件”,并且不论是“高层组件”还是“底层组件”都应当依赖于抽象, 抽象不应当依赖于实现,实现应当依赖于抽象(软件设计原则) IOC Invrse of Control 控制反转 一种反转刘,依赖和接口的方式,就是将控制权“往高...

u013815832的博客 392

【IEEE】从Accept到Online:详解Proof校样阶段的关键操作与避坑指南

本文详细解析了IEEE论文从Accept到Online的Proof校样阶段关键操作流程与避坑指南。重点介绍了IEEE Author Gateway平台的使用技巧、校样稿首页的风险点检查,以及多人协作校对策略,帮助作者高效完成论文出版前的最后审核,确保学术成果准确呈现。

weixin_30591551的博客 362

Day4——IOC容器结构

一. IOC容器结构 1.1 IOC容器在spring中实现 解释:spring中有IOC思想,IOC思想必须基于IOC容器来完成,而IOC容器在最底层本质上就是一个对象工厂。(即IOC容器的工作内容就是处理Java对象的) 在通过IOC容器读取Bean的实例之前,需要先将IOC容器本身实例化 spring提供了2种IOC容器实现方式: 方式 解释 BeanFactory IO...

Android_la的博客 320

在Ubuntu上通过Wine完美运行企业微信的详细指南

本文提供了在Ubuntu系统上通过Wine兼容层安装和运行企业微信的详细教程。针对官方未提供Linux版本的痛点,指南推荐使用Ubuntu Kylin团队优化打包的Wine环境,通过简单的命令行步骤即可完成部署,并涵盖启动、中文输入法配置、文件管理等常见问题的解决方案,帮助用户实现高效、稳定的办公沟通。

weixin_29306317的博客 233

elementui中el-select和el-tree实现下拉树形多选功能

elementui中el-select和el-tree实现下拉树形多选功能

weixin_49203377的博客 6558

Android Sp文件 轻量级IOC容器

  今天我想写一篇日志,上一篇技术日志,是纪念我会使用接口和泛型,这一次是为了纪念,我学会使用反射。   接口一般都和工厂相挂钩,但是工厂写多了,每次接口实例化对象时,都感觉有些弱智,有时甚至还想吐。   怎么解决这个问题呢?有什么办法呢,带着这样的思考,我开始留心ioc,ioc很有意思,他也是使用工厂生成对象。生成不同对象的参数有两种,一种是xml文件,配置类的包名,使用Class生成...

qq_30776389的博客 475

变压器耦合放大器(低频应用+高频应用)

变压器耦合放大器(低频应用+高频应用)

m0_54943120的博客 2275

android ioc框架,是否有必要在Android项目中使用IOC框架

是否有必要在Android项目中使用IOC框架?本来只是想找个注解库用一下结果顺便看了看相关的库首先是在任何项目中使用butterknife都是正确且没有问题的. 非常轻量级的库.可以缩减一部分代码.其次是Dagger其实和butterknife一样也是 JakeWharton 写的, 算是一家的产品吧.View binding注解部分和butterknife几乎一致.可以认为没有区别.Dagge...

weixin_30232185的博客 242

博途 V16(TIA portal V16)安装教程

本文提供了西门子TIA Portal V16软件的完整安装指南。内容包括百度网盘下载链接(提取码kv69)、详细安装步骤(关闭安全保护、典型安装设置)、授权破解方法,以及PLCSIM仿真功能的使用说明。重点演示了S7-1200 PLC程序的仿真过程,解析了仿真界面各元素功能,包括状态指示灯(RUN/STOP/ERROR)、操作按钮(RUN/STOP/MRES)和网络接口状态等。通过图文并茂的方式,完整呈现了从软件安装到PLC程序仿真的全流程操作。

lingchen1906的博客 6797

Matlab PolySpace 静态分析实战:从零搭建嵌入式代码安全防线

本文详细介绍了如何使用Matlab PolySpace进行嵌入式代码静态分析,从环境搭建到实战配置,帮助开发者提前发现内存溢出、未初始化变量等潜在缺陷。通过案例分享和进阶技巧,展示如何提升代码安全性和可靠性,特别适合汽车ECU、医疗设备等安全关键系统开发。

weixin_33701617的博客 603

Java反射实现类似 Spring IOC 实例

Java反射实现类似 Spring  IOC  实例   用反射技术实现应用层和业务层的分离,更好的完成代码间的解耦。   一.编写一个properties文件记录类的实现   二.编写DAO实现类 这里我们为了演示简单写了, 真实项目应该是访问数据库等一些业务。   三.通过工厂模式、单利模式、反射技术返回反转后的实现类   30--33行为读取

hexiaohu2009的专栏 555

在 SAP HANA 里为视图创建 Analytic Privilege,真正把同一份数据按角色切开

摘要:本文介绍了SAP HANA中基于业务角色的动态数据权限控制方法。通过Analytic Privilege技术,可以在同一视图上为不同角色设置不同的数据访问范围,实现行级安全控制。核心机制包括:1) 创建带有STRUCTURED PRIVILEGE CHECK的视图;2) 建立授权对象和用户映射表;3) 开发条件提供过程动态生成过滤条件;4) 创建结构化权限对象绑定条件提供器。这种设计使权限规则与业务数据解耦,便于维护变更,适合销售区域、财务数据等多角色访问控制场景。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2393

ioc高级(接口,对象注入)-dhroid文档

    前一章 ioc基础(视图,资源,assert注入)-dhroid文档 下面到了接口对象的注入了解冻吧,现在才是我们的重点,这才是ioc的核心思想,上面的都是android的辅助   1.5 对象依赖问题          我们先来将一下对象对象依赖的重要性,很多同学可能只学了android没学过javaee ,跟没听过spring的强大 例如中我们dhroid库的dhnet...

tengzhinei1的专栏 204

SAP Fiori Launchpad 上看不到任何 tile 应该怎么办?

中心UI组件是一个框架,为所有SAPFiori应用程序提供公共基础设施SAPFiorilaunchpad是所有SAPFioriUI的基础,并为SAPFiori应用程序提供基本功能,如登录,界面大小,应用程序之间的导航,和基于角色的应用程序目录。ABAP前端服务器包含所有基础设施组件,用于为客户端生成SAPFiori应用程序特定的UI,并与SAPBusinessSuite后端系统通信。SAPFiori应用程序的处理过程如下首先,客户端加载SAPFiori应用程序的界面。...

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 946

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

java 注释 see_关于@see注解

基于spring注解AOP的异常处理一.前言 项目刚刚开发的时候,并没有做好充足的准备.开发到一定程度的时候才会想到还有一些问题没有解决.就比如今天我要说的一个问题:异常的处理.写程序的时候一般都会通过try...catch...fin ...&lbrack;Spring&rsqb;IoC容器之进击的注解先啰嗦两句: 第一次在博客园使用markdown编辑,感觉渲染样式差强人意,还...

weixin_42210284的博客 762

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Kotlin反射真的不好用?带你从Andriod初代目架构深层次聊聊到底什么是依赖注入(一)

Kotlin反射真的不好用?带你从Andriod初代目架构深层次聊聊到底什么是依赖注入(一) 说起Android架构很多人甚至相当一部分多年经验的安卓开发都很难说的清楚。有趣的是,当你和别人谈论这个话题的什么,总有人说你在装什么逼呢。事实上,大部分安卓从业人员的大部分时间都在做些重复的业务逻辑,而对于底层还是停留在ambiguous,遇到的瓶颈很难提升的阶段。那么今天,就和大家聊聊安卓架构的哪些事。 既然是是架构,就不是听上去高大上而已。先从最简单的说起吧,比如依赖注入。废话这么多终于说到正题了。那就容

weixin_43497775的博客 466

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

我的控制反转,依赖注入和面向切面编程的理解

感谢 http://blog.xiaohansong.com/2015/10/21/IoC-and-DI/ 的供图 1.什么是控制? 如下图所示,我们看到了 软件系统中 对象的高耦合现象。全体齿轮的转动由一个对象来控制,如类B。 2.什么是 控制反转? 是用来对对象进行解耦。借助第三方实现具有依赖关系的的对象之间的解耦。这个第三方就是 ioc 容器。引入了

PacosonSWJTU的博客 1万+

android studio实现员工管理系统_SpringBoot员工管理系统(附完整代码及实现教程)...

本员工管理系统基于狂神老师的SpringBoot教程:https://www.bilibili.com/video/BV1PE411i7CV?p=20项目成效图:(一)环境搭建1. 新建一个SpringBoot项目选择配件时勾选SpringWeb和Thymeleaf 点击next,然后finish创建完成即可2. 导入静态资源首先创建不存在的静态资源目录public和resources 将html...

weixin_31668255的博客 2556

Android 开源开发框架

第一个:Afinal 项目地址:https://github.com/yangfuhai/afinal 功能:一个android的ioc,orm框架,内置了四大模块功 能:FinalAcitivity,FinalBitmap,FinalDb,FinalHttp。通过finalActivity,我们可以通过注解的 方式进行绑定ui和事件。通过finalBitmap,我们可以方便的加载bitmap图

jfj545的专栏 703

Day5——通过spring获取Bean对象

一. 回顾 前面Day2——搭建Spring环境讲到搭建spring环境,现在正式开始用spring获取Bean对象。 项目结构如下: 二. 步骤 如果还没有搭建好spring的环境,请查看Day2——搭建Spring环境 创建实体类: Person.java package com.atguigu.spring.bean; /** * Bean实体类 * @author user * ...

Android_la的博客 221

android final 框架,Android的快速开发框架 afinal

软件介绍Afinal简介Afinal 是一个android的sqlite orm 和 ioc 框架。同时封装了android中的http框架,使其更加简单易用;使用finalBitmap,无需考虑bitmap在android中加载的时候oom的问题和快速滑动的时候图片加载位置错位等问题。Afinal的宗旨是简洁,快速。约定大于配置的方式。尽量一行代码完成所有事情。目前Afinal主要有四大模块:F...

weixin_42104181的博客 202

Android依赖注入Dagger的使用和源码解析(上篇)

依赖注入是从应用程序的角度在描述,可以把依赖注入描述完整点:应用程序依赖容器创建并注入它所需要的外部资源;而控制反转是从容器的角度在描述,描述完整点:容器控制应用程序,由容器反向的向应用程序注入应用程序所需要的外部资源。 Dagger1是Android上最流行的依赖注入框架。它是由Square公司受到Guice启发创建的。Dagger2是Dagger1的分支,由谷歌公司接手开发,目前的版本是2.2。Dagger2是受到AutoValue项目的启发

robert的专栏 5465

Java常用工具包 Jodd

下文摘抄自:开源中国Demo jar下载官方文档 JoddAPI Jodd 是一个 Java 的工具包和一个微型框架。Jodd 工具增强了 JDK 提供很多强大的功能,帮助你实现日常的一些开发任务,让代码更加可靠和健壮。而 Jodd 框架是一个轻量级的应用框架,紧缩但强大。设计遵循 CoC、DRY 和 SCS 原则,让开发更加简单。 Jodd = tools + ioc + mvc +...

kuyuyingzi的专栏 430

深入解析Spring Bean生命周期:从核心原理到实战应用

在Java企业级开发中,控制反转(IoC)和依赖注入(DI)是Spring框架的核心设计思想,它们通过容器管理对象的创建与依赖关系,实现了组件间的解耦。其底层实现原理依赖于Bean生命周期的精细管理,包括实例化、属性赋值、初始化及销毁等关键阶段。这一机制的技术价值在于提供了强大的扩展点,如BeanPostProcessor、Aware接口等,允许开发者在Bean生命周期的关键时刻进行定制化干预,从而支持AOP、事务管理等高级特性。在实际应用场景中,理解生命周期有助于解决循环依赖、资源优雅释放、启动任务执行等

weixin_34279246的博客 671

Android程序员为什么要去学Java后台

作为一个原生Android开发,一路走来经历了Java 、 Kotlin的洗礼;在“原生要凉”的氛围下学习Cordova、ReactNative、Weex、Flutter 等跨平台框架;之后又在“大前端”的口号下延伸到React、Vue 等前端框架的学习;最终面对“全栈”的诱惑,...

weixin_34050427的博客 186
上一篇: android自定义view
下一篇: Activity四种启动模式
cst_code
博客等级 码龄10年 4粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值