Andorid之Annotation框架初使用(一)
1. 设置Activity的布局
@EActivity(R.layout.main)
public class MyActivity extends Activity {}
注: 此时在AndroidManifest.xml 注册Activity需要: <activity android:name="MyActivity_" />
2. 设置及使用Application
设置:在AndroidManifest.xml也需要配置<application android:name="MyApplicaton_" />
@EApplication
public class MyApplication extends Application {}
使用:
@EActivity
public class MyActivity extends Activity {
@App
MyApplication application;
}
或者:
@EBean
public class MyBean {
@App
MyApplication application;
}
3. 普通类
@EBean
public class MyClass {}
注:这个普通只能有一个构造函数,这个构造函数要不是没有参数,或者只有一个Context的参数
使用: @Bean的标签每次都会创建一个实例,所以不能继承一个使用@EBean的类
@EBean
public class MyOtherClass {
@Bean
MyClass myClass;
}
声明接口的同时也实例化:
@EActivity
public class MyActivity extends Activity {
/* A MyImplementation instance will be injected.
* MyImplementation 必须使用标签 @EBean and 实现 MyInterface.
*/
@Bean(MyImplementation.class)
MyInterface myInterface;
}
在普通类中引入它所在的Activity或者Service的Context
@EBean
public class MyClass {
@RootContext
Context context;
// Only injected if the root context is an activity,else is null
@RootContext
Activity activity;
// Only injected if the root context is a service,else is null
@RootContext
Service service;
// Only injected if the root context is an instance of MyActivity,else is null
@RootContext
MyActivity myActivity;
}
使用标签@AfterViewInject, 会在所有依赖注入完成后才执行。
@EBean
public class MyClass {
@SystemService
NotificationManager notificationManager;
@Bean
MyOtherClass dependency;
public MyClass() {
// notificationManager and dependency are null
}
@AfterInject
public void doSomethingAfterInjection() {
// notificationManager and dependency 已经设置完成
}
}
注意,拥有父子关系的@AfterInject的方法名字不能相同
单例的普通类:
@EBean(scope = Scope.Singleton)
public class MySingleton {}
注意: 在单例的普通类如果需要使用context,请使用ApplicationContext。也不要在这里注入view或者是view的事件
Andorid之Annotation框架初使用(一)的更多相关文章
- Andorid之Annotation框架初使用(六)
EVENT @Click :点击事件,只能有0个或1个参数,且参数为View @Click(R.id.myButton) void myButtonWasClicked() { [...] } @Cl ...
- Andorid之Annotation框架初使用(七)
Save Instance State:程序保留Activity的实例状态 , 在onSaveInstanceState(Bundle)被系统调用的时候自动保存 , onCreate(Bundle)被 ...
- Andorid之Annotation框架初使用(五)
注入res文件夹的资源: @StringRes @EActivity public class MyActivity extends Activity { @StringRes(R.string.he ...
- Andorid之Annotation框架初使用(四)
代替繁琐的finViewById @EActivity public class MyActivity extends Activity { // Injects R.id.myEditText @V ...
- Andorid之Annotation框架初使用(三)
线程使用: @Background这个是使用了cached thread pool executor , 阻止开启过多的线程 可以为@Background指定一个id,用于随时终止线程的操作(Back ...
- Andorid之Annotation框架初使用(二)
Fragment: @EActivity(R.layout.fragments) public class MyFragmentActivity extends FragmentActivity { ...
- AVFoundation 框架初探究(二)
接着第一篇总结 系列第一篇地址:AVFoundation 框架初探究(一) 在第一篇的文章中,我们总结了主要有下面几个点的知识: 1.对AVFoundation框架整体的一个认识 2.AVSpeech ...
- dubbo框架----初探索-配置
使用框架版本 dubbo-2.5.3 spring-4.2.1.RELEASE jdk-1.8 tomcat-8.0 zookeeper-3.3.6 Dubbo与Zookeeper.SpringMVC ...
- PHP Slim 框架初体验之无法访问控制器
话不多说,先把报错贴出来: 刚开始用slim框架,在设置完自动加载文件和路由文件之后,我写了一个控制器: <?php use \Psr\Http\Message\ServerRequestInt ...
随机推荐
- Linux 基础——文件搜索命令find
一.find命令的好处 有时会经常在目录下找文件或目录的具体存放在哪,但是该目录下的文件又很多不好找出.这时并不需要手动查看所有的文件,用find命令来帮助查找就行了.所以文件或目录一定归好类,存放有 ...
- Redis学习-redis概述
最近刚刚接触了redis技术,对此有一些了解,这是简单做一点总结. Redis简介 首先,简单了解一下NoSQL(Not only sql),不要错误的理解为:没有SQL,而是不仅仅是SQL.NoSQ ...
- beego orm操作mysql数据库
慢慢弄起来~~ 按官方操作文档试一下. 那个err重复和user编号问题,以后再弄.. package main import ( "fmt" "github.com/a ...
- SGU 208. Toral Tickets
208. Toral Tickets time limit per test: 0.25 sec. memory limit per test: 65536 KB input: standard ou ...
- 【PAT】1001. 害死人不偿命的(3n+1)猜想 (15)
1001. 害死人不偿命的(3n+1)猜想 (15) 卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n+1)砍掉一半.这样一直反复砍下去, ...
- bzoj 1877 最小费用流
思路:挺裸的费用流,拆拆点就好啦. #include<bits/stdc++.h> #define LL long long #define fi first #define se sec ...
- .NET基本权限系统框架源代码
DEMO下载地址: 百度网盘:http://pan.baidu.com/s/147ilj http://download.csdn.net/detail/shecixiong/5372895 一.开发 ...
- thinkjs REST API的跨域设置
用thinkjs也有一小段时间了,和其它国产框架一样,起初是处于观望态度.当然我最先的选择也不是thinkjs而是选的express,用到后面发现实现一个能让自己用着比较顺手的博客还是一件蛮困难或者说 ...
- POJ1284 Primitive Roots [欧拉函数,原根]
题目传送门 Primitive Roots Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 5434 Accepted: ...
- TensorFlow——module 'tensorflow' has no attribute 'xxx'
tf.sub()更改为tf.subtract() tf.mul()更改为tf.multiply() tf.types.float32更改为tf.float32 tf.pact()更改为tf.stact ...