- 深入Kotlin语言在Android开发中的应用_Android_lecture07
新职语
本文还有配套的精品资源,点击获取简介:在Android开发领域,Kotlin凭借其简洁性、安全性和强大的交互能力已经成为首选编程语言。本讲座将深入讲解Kotlin的基础语法、空安全、类型系统、高阶函数与Lambda表达式、扩展函数与属性、Anko库、协程、Android核心组件以及数据绑定。同时,还将介绍Dagger2或Hilt依赖注入、MVVM架构和AndroidJetpack组件等高级技巧,并
- Android Kotlin MVP 架构项目教程
常樱沙Vigour
AndroidKotlinMVP架构项目教程android-kotlin-mvp-architectureThisrepositorycontainsadetailedsampleappthatimplementsMVParchitectureinKotlinusingDagger2,Room,RxJava2,FastAndroidNetworkingandPlaceholderView项目地址:
- dagger2 使用教程第一节
九风特
我翻译了官方文档,说实话,那个文档只是介绍了很多概念,第一次了解dagger2的兄弟,看完了可能更迷了。这没关系,也正常。下面我们来一步一步的学习它,既然要使用它当做我们架构的材料,那就要真正的了解它,不过凡事都要循序渐进,那么我们就从最简单的开始吧为什么要使用dagger2关于这方面可以参考官方文档的自述,使用dagger2的目的就是为了实现依赖注入,dagger2很好的实现了依赖注入,那么只要
- Dagger2 笔记
杨华_6f65
是一个依赖注入框架,依赖注入是面向对象编程的一种设计原则,其目的是为了降低程序耦合,实现MVP模式。
- Dagger2
imkobedroid
dependencies:一个component可以通过此注解依赖另外一个component,但是所依赖的component中必须要提供所要使用的modules中provide所注解的方法,并且返回值相同,如果其中有named注解的方法这里的返回值为void,如果依赖的component有@signton标注,依赖者必须自定义一个signton标注并放在上面,例如:被依赖者@Singleton@C
- Android项目框架之MVP+Dagger.Android+LiveData
海晨忆
个人博客:haichenyi.com。感谢关注 之前的那个系列从零开始搭建一个主流的项目框架(一~八),尽管把dagger2中injectactivity优化了一下,但是依然显得繁琐,每一个activity里面都要写一个inject方法。Dagger.Android只用在基类里面inject一次,子类里不用管,直接用。 还有就是之前的MVP架构,每次更新页面的时候都要在每个页面对应的Contr
- Android Weekly Notes #437-438
圣骑士wind
AndroidWeeklyIssue#4373PracticalStepsToMasterAndroidDataStoreGoodbyeGson,HelloMoshiGson已经过时了,拥抱moshi.AnnouncingCoil1.0Coil1.0发布.AndroidWeeklyIssue#438Dagger2inAndroidDynamicMultimoduleproject多module项目
- 1.Android架构 retrofit运行时注解(POST详解)+反射实战demo 2分钟手写彻底搞懂注解
鹏城十八少
今天开始架构师之路!分为6节课,以手写retofit,Butterknife,Arount,Dagger2,hilit,ASM,AOP为主说说你对注解的了解,是怎么解析的编译时注解与运行时注解,为什么retrofit要使用运行时注解?什么时候用运行时注解?编译期注解处理的是字节码还是java文件它们的生命周期不一样,有些接口不用在编译时处理。他们没有用到。所以运行时更适合Retrofit:运行时注
- Dagger2 简单实例
King9527
最近通宵,一些技术的简单标记。Dagger2看了很多文章,对于刚开始看的人真是头疼,我们不是要解耦吗,感觉搞得很复杂,我按我的理解,由浅到深讲解一下。Dagger2是什么?agger2是一个基于JSR-330标准的依赖注入框架,在编译期间自动生成代码,负责依赖对象的创建有什么好处:为了进一步解耦和方便测试,我们会使用依赖注入的方式构建对象。Dagger2的字段说明:@Inject:通常在需要依赖的
- Android.mk中APT使用
Calvin880828
android系统分析
Android.mk中APT使用1.注解工具2.Android.mkAPT支持2.1Android.mk配置2.2Androidbuild系统patch3.编译生成源码1.注解工具注解工具是java代码生成及对象注入的强大工具。注解包括源码可见、字节码可见及运行时可见。目前比较流行的APT技术,也即时编译成字节码时可见。下面以Dagger2及ButterKnife两款注解工具讲解如何在Androi
- 配置dagger2
不一样的王小同
不少同志看到网上配置dagger2的教程,结果可能一直报错,如下所示:Error:Couldnotgetunknownproperty'classpath'fortask':app:transformJackWithJackForDebug'oftypecom.android.build.....这个时候我们需要检查自己是否是按照网上说的那样添加apt插件什么的,其实不要那么做了,现在Androi
- 单读学习-网络框架搭建
tuionf
概述单读APP的网络框架部分采用Dagger2+Retrofit2.0+Rxjava模式,网络框架的初始化在Application中,请先了解Dagger2的简单在引入依赖Retrofit2.0+Rxjava的依赖在build.gradle(app)分别引入Retrofit2.0和Rxjava的依赖compile'io.reactivex:rxjava:1.0.14'compile'io.reac
- 2019-05-17 Dagger2 在 Kotlin 中使用出现Unresolved reference: DaggerxxxComponent
猫KK
如题,按正常的java方式使用,在将java代码转化成kotlin代码时,编译会出现Unresolvedreference:DaggerxxxComponent问题,这其实时kotlin的语言对注解的处理详细看这里,解决该问题:在app下的gradle中:WechatIMG475.jpegWechatIMG476.jpeg
- Android编译时注解
huweijian5
Android编译时注解[TOC]前言相信大家经常都使用到注解,如果使用过AndroidAnnotations,Dagger2,EventBus,RxJava,BufferKnife等开源项目,对注解应该更为深刻,这些项目的原理基本都是基于编译时注解动态生成代码,效果等同于手写代码,因此相对反射来说性能基本无影响。另外,已经实现了注解轻松实现线程切换开源项目,欢迎fork&star.了解注解注解的
- Dagger2基本使用2之子组件
翻滚丷大头鱼
javadagger2
一,基本使用,完成一个注入1,创建作用域//自定义作用域,作用域只是一个名称,随便起啥名字都可以,这里取一个全局单利的名字@Scope@Documented@Retention(RUNTIME)public@interfaceGlobalSingleton{}2,创建一个modulepublicinterfaceApiService{}//调用dagger的@Component注解,这个里面可以创
- Dagger2基本使用3之其他使用
翻滚丷大头鱼
javadagger2
一,Dagger容器中添加不是Dagger创建的实力对象在实际使用中,有些类的已经创建好了,dagger需要使用这些类,就需要通过参数传入,下面是android中传入application实例的一个例子1,创建module//创建需要传入已经已经创建好的实例类@ModulepublicclassContextModule{privatefinalApplicationapplication;//通
- Dagger2源码分析
翻滚丷大头鱼
android
首先,还是看看简单的dagger为我们写了哪些代码,先看代码publicclassUser{@InjectpublicUser(){Log.e("User","newUser"+this);}}@ComponentpublicinterfaceAppComponent{voidinject(MainActivitymainActivity);}publicclassMainActivityexte
- Android之Dagger&Hilt依赖注入使用指南
AAnthonyyy
依赖注入androidkotlinandroid-studio
简介Dagger2是一个DependencyInjection(DI)依赖注入框架。它提供给Java和Android使用,主要用于模块间解耦、提高代码的健壮性和可维护性。使用了IOC(控制反转)的思想,在编译阶段使用APT利用Java注解生成Java代码,然后结合部分手写代码来完整依赖注入工作。运行前需要先编译一次项目,目的是用APT生成中间代码。Dagger2不使用反射,在编译阶段生成代码,所以
- Android开源框架--Dagger2详解
袁震
android开源
功名只向马上取,真是英雄一丈夫一,定义我们知道在一个类中,通常会定义其他类型的变量,这个变量就是我们所说的“依赖“。对一个类的变量进行初始化,有两种方式。第一种,这个类自己进行初始化;第二种,其他外部的类帮你进行初始化。其中第二种方式,由外部类进行初始化的方式就是我们所说的”依赖注入“。由于他是由外部来控制,因此又叫做”控制反转“。依赖注入和非依赖注入的区别就是,变量初始化工作是由谁来做的。前面我
- Android-Jetpack--Hilt详解
袁震
androidjetpackandroid
善学者尽其理,善行者究其难一,定义Hilt是针对dagger2的二次封装依赖注入框架,至于什么是依赖注入,在Android开源框架--Dagger2详解-CSDN博客中已经讲解,建议大家先去了解Dagger2之后,再来看Hilt。这样就会感觉Hilt其实非常简单。上面说到了Hilt是对dagger2的二次封装,dagger2是可以用于任何类的注入的,但是Hilt就是安卓专属的API了。目前Hilt
- 适用于 Android 初学者的 Dagger 2 - 进阶第二部分
PekingVagrant
android翻译适用于Android初学者的Dagger2-进Dagger2Dagger2forAndroidBeginners
原文链接这个故事是该系列的第七部分,适用于Android初学者的Dagger2。如果您没有阅读上一个,可以从下面开始。Dagger2forAndroidBeginners — IntroductionDaggerisafullystatic,compile-timedependencyinjectionframeworkforbothJavaandAndroid.Itisanadaptationo
- 三 Dagger2的@Singleton注解
天地玄黄
概述:在Dagger2中,@Singleton注解可以保证被注解的对象全局都是单例。本篇主要分析为什么这个注解会有这种效果。首先@Singleton注解需要在两处添加:第一处是在创建实例的地方添加@ModulepublicclassMainModule{@Provides@SingletonstaticStudentprovideStudent(){returnnewStudent();}@Pro
- kotlin与dagger2问题:Unresolved reference: DaggerMainComponent
Mars-xq
kotlin
kotlin项目集成dagger2时遇到:E:\Users\lenovo\MyDagger2\app\src\main\java\com\xq\mydagger2\MainActivity.ktError:(22,9)Unresolvedreference:DaggerMainComponentError:Executionfailedfortask':app:compileDebugKotlin
- Dagger2学习笔记
Zeal27
架构依赖注入控制反转Dagger2
Dagger2是第一个使用生成代码的方式实现依赖注入的框架。作为Dagger的升级版本,自然有它的优势,优先注重的是执行效率。本文着重介绍Dagger2。官方据点传送门:https://google.github.io/dagger//users-guide.html首先来看一下依赖注入和控制反转在软件工程领域,DI是一种实现控制反转用来解决依赖的设计模式,依赖是一个可以被使用的对象(服务),注入
- 创建Android Architecture Components项目需要用到的组件
执念蓝枫
LiveData持有可被观察数据的类DatBinding数据绑定(在布局文件里绑定数据)Dagger2依赖注入(用于解耦)Room对象映射库,能够在数据库内容发生改变时通过LiveData的形式发出通知LifecycleLifecycle是一个包含组件(Activity或者Fragment)生命周期状态的类,这个类还能够为其他类提供当前的生命周期。PagingLibrary分页加载库:用于逐步从数
- Android开发常用轮子
yabinYang
android常用
一、快速开发框架1.XSnow基于RxJava2+Retrofit2精心打造的Android基础框架,包含网络、上传、下载、缓存、事件总线、权限管理、数据库、图片加载,基本都是项目中必用功能,每个模块充分解耦,可自由拓展2.MVPArms一个整合了大量主流开源项目高度可配置化的AndroidMVP快速集成框架(包括Mvp、Dagger2、RxJava、RxAndroid、Rxlifecycle、R
- android常用轮子(持续更新)
流船
一、快速开发框架XSnow基于RxJava2+Retrofit2精心打造的Android基础框架,包含网络、上传、下载、缓存、事件总线、权限管理、数据库、图片加载,基本都是项目中必用功能,每个模块充分解耦,可自由拓展2.MVPArms一个整合了大量主流开源项目高度可配置化的AndroidMVP快速集成框架(包括Mvp、Dagger2、RxJava、RxAndroid、Rxlifecycle、RxC
- 安卓常用框架
IT刘小牛
android安卓框架安卓轮子android
一、快速开发框架XSnow基于RxJava2+Retrofit2精心打造的Android基础框架,包含网络、上传、下载、缓存、事件总线、权限管理、数据库、图片加载,基本都是项目中必用功能,每个模块充分解耦,可自由拓展2.MVPArms一个整合了大量主流开源项目高度可配置化的AndroidMVP快速集成框架(包括Mvp、Dagger2、RxJava、RxAndroid、Rxlifecycle、RxC
- Dagger2 User's Guide (用户指南) 全文翻译。
红酥手黄藤酒丶
原文地址https://google.github.io/dagger/users-guide翻译很累,转载请注明出处。适合使用过一段时间Dagger2的人看。可能会用到的示例。下载官方github上的示例链接:https://github.com/google/dagger/tree/master/examples/simple/src/main/java/coffee有不对或者不合适的地方请指
- Dagger2进阶-模块化开发
dasan沈扬
在Dagger2快速入门中,我们通过注入了Logger,实现了打日志,假设要为Logger增加上传日志功能,那么现在Logger需要一个网络库组件Retrofit实例,这个实例不应该每次都初始化,应该是全局的,所以Logger代码改造如下:publicclassLogger{privateRetrofitretrofit;publicLogger(Retrofitretrofit){this.re
- java短路运算符和逻辑运算符的区别
3213213333332132
java基础
/*
* 逻辑运算符——不论是什么条件都要执行左右两边代码
* 短路运算符——我认为在底层就是利用物理电路的“并联”和“串联”实现的
* 原理很简单,并联电路代表短路或(||),串联电路代表短路与(&&)。
*
* 并联电路两个开关只要有一个开关闭合,电路就会通。
* 类似于短路或(||),只要有其中一个为true(开关闭合)是
- Java异常那些不得不说的事
白糖_
javaexception
一、在finally块中做数据回收操作
比如数据库连接都是很宝贵的,所以最好在finally中关闭连接。
JDBCAgent jdbc = new JDBCAgent();
try{
jdbc.excute("select * from ctp_log");
}catch(SQLException e){
...
}finally{
jdbc.close();
- utf-8与utf-8(无BOM)的区别
dcj3sjt126com
PHP
BOM——Byte Order Mark,就是字节序标记 在UCS 编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输 字符"ZERO WIDTH NO-BREAK SPACE"。这样如
- JAVA Annotation之定义篇
周凡杨
java注解annotation入门注释
Annotation: 译为注释或注解
An annotation, in the Java computer programming language, is a form of syntactic metadata that can be added to Java source code. Classes, methods, variables, pa
- tomcat的多域名、虚拟主机配置
g21121
tomcat
众所周知apache可以配置多域名和虚拟主机,而且配置起来比较简单,但是项目用到的是tomcat,配来配去总是不成功。查了些资料才总算可以,下面就跟大家分享下经验。
很多朋友搜索的内容基本是告诉我们这么配置:
在Engine标签下增面积Host标签,如下:
<Host name="www.site1.com" appBase="webapps"
- Linux SSH 错误解析(Capistrano 的cap 访问错误 Permission )
510888780
linuxcapistrano
1.ssh -v
[email protected] 出现
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
错误
运行状况如下:
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
debug1: Reading configuratio
- log4j的用法
Harry642
javalog4j
一、前言: log4j 是一个开放源码项目,是广泛使用的以Java编写的日志记录包。由于log4j出色的表现, 当时在log4j完成时,log4j开发组织曾建议sun在jdk1.4中用log4j取代jdk1.4 的日志工具类,但当时jdk1.4已接近完成,所以sun拒绝使用log4j,当在java开发中
- mysql、sqlserver、oracle分页,java分页统一接口实现
aijuans
oraclejave
定义:pageStart 起始页,pageEnd 终止页,pageSize页面容量
oracle分页:
select * from ( select mytable.*,rownum num from (实际传的SQL) where rownum<=pageEnd) where num>=pageStart
sqlServer分页:
 
- Hessian 简单例子
antlove
javaWebservicehessian
hello.hessian.MyCar.java
package hessian.pojo;
import java.io.Serializable;
public class MyCar implements Serializable {
private static final long serialVersionUID = 473690540190845543
- 数据库对象的同义词和序列
百合不是茶
sql序列同义词ORACLE权限
回顾简单的数据库权限等命令;
解锁用户和锁定用户
alter user scott account lock/unlock;
//system下查看系统中的用户
select * dba_users;
//创建用户名和密码
create user wj identified by wj;
identified by
//授予连接权和建表权
grant connect to
- 使用Powermock和mockito测试静态方法
bijian1013
持续集成单元测试mockitoPowermock
实例:
package com.bijian.study;
import static org.junit.Assert.assertEquals;
import java.io.IOException;
import org.junit.Before;
import org.junit.Test;
import or
- 精通Oracle10编程SQL(6)访问ORACLE
bijian1013
oracle数据库plsql
/*
*访问ORACLE
*/
--检索单行数据
--使用标量变量接收数据
DECLARE
v_ename emp.ename%TYPE;
v_sal emp.sal%TYPE;
BEGIN
select ename,sal into v_ename,v_sal
from emp where empno=&no;
dbms_output.pu
- 【Nginx四】Nginx作为HTTP负载均衡服务器
bit1129
nginx
Nginx的另一个常用的功能是作为负载均衡服务器。一个典型的web应用系统,通过负载均衡服务器,可以使得应用有多台后端服务器来响应客户端的请求。一个应用配置多台后端服务器,可以带来很多好处:
负载均衡的好处
增加可用资源
增加吞吐量
加快响应速度,降低延时
出错的重试验机制
Nginx主要支持三种均衡算法:
round-robin
l
- jquery-validation备忘
白糖_
jquerycssF#Firebug
留点学习jquery validation总结的代码:
function checkForm(){
validator = $("#commentForm").validate({// #formId为需要进行验证的表单ID
errorElement :"span",// 使用"div"标签标记错误, 默认:&
- solr限制admin界面访问(端口限制和http授权限制)
ronin47
限定Ip访问
solr的管理界面可以帮助我们做很多事情,但是把solr程序放到公网之后就要限制对admin的访问了。
可以通过tomcat的http基本授权来做限制,也可以通过iptables防火墙来限制。
我们先看如何通过tomcat配置http授权限制。
第一步: 在tomcat的conf/tomcat-users.xml文件中添加管理用户,比如:
<userusername="ad
- 多线程-用JAVA写一个多线程程序,写四个线程,其中二个对一个变量加1,另外二个对一个变量减1
bylijinnan
java多线程
public class IncDecThread {
private int j=10;
/*
* 题目:用JAVA写一个多线程程序,写四个线程,其中二个对一个变量加1,另外二个对一个变量减1
* 两个问题:
* 1、线程同步--synchronized
* 2、线程之间如何共享同一个j变量--内部类
*/
public static
- 买房历程
cfyme
2015-06-21: 万科未来城,看房子
2015-06-26: 办理贷款手续,贷款73万,贷款利率5.65=5.3675
2015-06-27: 房子首付,签完合同
2015-06-28,央行宣布降息 0.25,就2天的时间差啊,没赶上。
首付,老婆找他的小姐妹接了5万,另外几个朋友借了1-
- [军事与科技]制造大型太空战舰的前奏
comsci
制造
天气热了........空调和电扇要准备好..........
最近,世界形势日趋复杂化,战争的阴影开始覆盖全世界..........
所以,我们不得不关
- dateformat
dai_lm
DateFormat
"Symbol Meaning Presentation Ex."
"------ ------- ------------ ----"
"G era designator (Text) AD"
"y year
- Hadoop如何实现关联计算
datamachine
mapreducehadoop关联计算
选择Hadoop,低成本和高扩展性是主要原因,但但它的开发效率实在无法让人满意。
以关联计算为例。
假设:HDFS上有2个文件,分别是客户信息和订单信息,customerID是它们之间的关联字段。如何进行关联计算,以便将客户名称添加到订单列表中?
&nbs
- 用户模型中修改用户信息时,密码是如何处理的
dcj3sjt126com
yii
当我添加或修改用户记录的时候对于处理确认密码我遇到了一些麻烦,所有我想分享一下我是怎么处理的。
场景是使用的基本的那些(系统自带),你需要有一个数据表(user)并且表中有一个密码字段(password),它使用 sha1、md5或其他加密方式加密用户密码。
面是它的工作流程: 当创建用户的时候密码需要加密并且保存,但当修改用户记录时如果使用同样的场景我们最终就会把用户加密过的密码再次加密,这
- 中文 iOS/Mac 开发博客列表
dcj3sjt126com
Blog
本博客列表会不断更新维护,如果有推荐的博客,请到此处提交博客信息。
本博客列表涉及的文章内容支持 定制化Google搜索,特别感谢 JeOam 提供并帮助更新。
本博客列表也提供同步更新的OPML文件(下载OPML文件),可供导入到例如feedly等第三方定阅工具中,特别感谢 lcepy 提供自动转换脚本。这里有导入教程。
- js去除空格,去除左右两端的空格
蕃薯耀
去除左右两端的空格js去掉所有空格js去除空格
js去除空格,去除左右两端的空格
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>&g
- SpringMVC4零配置--web.xml
hanqunfeng
springmvc4
servlet3.0+规范后,允许servlet,filter,listener不必声明在web.xml中,而是以硬编码的方式存在,实现容器的零配置。
ServletContainerInitializer:启动容器时负责加载相关配置
package javax.servlet;
import java.util.Set;
public interface ServletContainer
- 《开源框架那些事儿21》:巧借力与借巧力
j2eetop
框架UI
同样做前端UI,为什么有人花了一点力气,就可以做好?而有的人费尽全力,仍然错误百出?我们可以先看看几个故事。
故事1:巧借力,乌鸦也可以吃核桃
有一个盛产核桃的村子,每年秋末冬初,成群的乌鸦总会来到这里,到果园里捡拾那些被果农们遗落的核桃。
核桃仁虽然美味,但是外壳那么坚硬,乌鸦怎么才能吃到呢?原来乌鸦先把核桃叼起,然后飞到高高的树枝上,再将核桃摔下去,核桃落到坚硬的地面上,被撞破了,于是,
- JQuery EasyUI 验证扩展
可怜的猫
jqueryeasyui验证
最近项目中用到了前端框架-- EasyUI,在做校验的时候会涉及到很多需要自定义的内容,现把常用的验证方式总结出来,留待后用。
以下内容只需要在公用js中添加即可。
使用类似于如下:
<input class="easyui-textbox" name="mobile" id="mobile&
- 架构师之httpurlconnection----------读取和发送(流读取效率通用类)
nannan408
1.前言.
如题.
2.代码.
/*
* Copyright (c) 2015, S.F. Express Inc. All rights reserved.
*/
package com.test.test.test.send;
import java.io.IOException;
import java.io.InputStream
- Jquery性能优化
r361251
JavaScriptjquery
一、注意定义jQuery变量的时候添加var关键字
这个不仅仅是jQuery,所有javascript开发过程中,都需要注意,请一定不要定义成如下:
$loading = $('#loading'); //这个是全局定义,不知道哪里位置倒霉引用了相同的变量名,就会郁闷至死的
二、请使用一个var来定义变量
如果你使用多个变量的话,请如下方式定义:
. 代码如下:
var page
- 在eclipse项目中使用maven管理依赖
tjj006
eclipsemaven
概览:
如何导入maven项目至eclipse中
建立自有Maven Java类库服务器
建立符合maven代码库标准的自定义类库
Maven在管理Java类库方面有巨大的优势,像白衣所说就是非常“环保”。
我们平时用IDE开发都是把所需要的类库一股脑的全丢到项目目录下,然后全部添加到ide的构建路径中,如果用了SVN/CVS,这样会很容易就 把
- 中国天气网省市级联页面
x125858805
级联
1、页面及级联js
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
&l