最后送福利了,现在关注我可以获取包含源码解析,自定义View,动画实现,架构分享等。
内容难度适中,篇幅精炼,每天只需花上十几分钟阅读即可。
大家可以跟我一起探讨,有flutter—底层开发—性能优化—移动架构—资深UI工程师 —NDK相关专业人员和视频教学资料,还有更多面试题等你来拿
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
1.3.TaskContainer的create方法创建。
tasks.create(name: ‘hello’) << {
println “hello world”
}
1.4 通过上面dsl语法创建
2、任务依赖
任务依赖会决定任务运行的先后顺序,被依赖的任务会在定义依赖的任务之前执行。创建任务间的依赖关系如下所示。
task hello << {
println ‘Hello world!’
}
task go(dependsOn: hello) << {
println “go for it”
}
在hello任务的基础上增加了一个名为go的任务,通过dependsOn来指定依赖的任务为hello,因此go任务运行在hello之后。
3、动态定义任务
动态定义任务指的是在运行时来定义任务的名称
3.times {number ->
task “task$number” << {
println “task $number”
}
}
times是Groovy在java.lang.Number中拓展的方法,是一个定时器。3.times中循环创建了三个新任务,隐式变量number的值为0,1,2,任务的名称由task加上number的值组成,达到了动态定义任务的目的。
运行gradle -q task0构建脚本
4、任务的分组和描述
Gradle有任务组的概念,可以为任务配置分组和描述,以便于更好的管理任务,拥有良好的可读性。
task hello {
group = ‘build’
description = ‘hello world’
doLast {
println “任务分组: ${group}”
println “任务描述: ${description}”
}
}
task go(dependsOn: hello) << {
println “go for it”
}
Gradle日志级别
级别 用于
ERROR 错误消息
QUIET 重要的信息消息
WARNING 警告消息
LIFECYCLE 进度信息消息
INFO 信息性消息
DEBUG 调试消息
前面我们通过gradle -q +任务名称来运行一个指定的task,这个q是命令行开关选项,通过开关选项可以控制输出的日志级别。
开关选项 输出日志级别
无日志选项 LIFECYCLE及更高级别
-q或者 --quiet QUIET及更高级别
-i或者 --info INFO及更高级别
-d或者 --debug DEBUG及更高级别
Gradle 命令行
略
Gradle 的语法
1、声明变量
Groovy中用def关键字来定义变量,可以不指定变量的类型,默认访问修饰符是public。
def a = 1;
def int b = 1;
def c = “hello world”;
2、方法
方法使用返回类型或def关键字定义,方法可以接收任意数量的参数,这些参数可以不申明类型,如果不提供可见性修饰符,则该方法为public,如果指定了方法返回类型,可以不需要def关键字来定义方法,如果不使用return ,方法的返回值为最后一行代码的执行结果。
用def关键字定义方法。
task method <<{
add (1,2)
minus 1,2 //1
}
def add(int a,int b) {
println a+b //3
}
int minus(a,b) {
return a-b
}
3、类
Groovy类非常类似于Java类。
task method <<{
def p = new Person()
p.increaseAge 5
println p.age
}
class Person {
String name
Integer age =10
def increaseAge(Integer years) {
this.age += years
}
}
Groovy类与Java类有以下的区别:
默认类的修饰符为public。
没有可见性修饰符的字段会自动生成对应的setter和getter方法。
类不需要与它的源文件有相同的名称,但还是建议采用相同的名称。
4、语句
(1) 断言
Groovy断言和Java断言不同,它一直处于开启状态,是进行单元测试的首选方式。
task method <<{
assert 1+2 == 6
}
(2)for循环
Groovy支持Java的for(int i=0;i<N;i++)和for(int i :array)形式的循环语句,另外还支持for in loop形式,支持遍历范围、列表、Map、数组和字符串等多种类型
//遍历范围
def x = 0
for ( i in 0…3 ) {
x += i
}
assert x == 6
//遍历列表
def x = 0
for ( i in [0, 1, 2, 3] ) {
x += i
}
assert x == 6
//遍历Map中的值
def map = [‘a’:1, ‘b’:2, ‘c’:3]
x = 0
for ( v in map.values() ) {
x += v
}
assert x == 6
(3)switch语句
task method <<{
def x = 16
def result = “”
switch ( x ) {
case “ok”:
result = “found ok”
case [1, 2, 4, ‘list’]:
result = “list”
break
case 10…19:
result = “range”
break
case Integer:
result = “integer”
break
default:
result = “default”
}
assert result == “range”
}
5、数据类型
Groovy中的数据类型主要有以下几种:
Java中的基本数据类型
Groovy中的容器类
闭包
(1)字符串
在Groovy种有两种字符串类型,普通字符串String(java.lang.String)和插值字符串GString(groovy.lang.GString)
def name = ‘Android进阶之光’
println “hello ${name}”
println “hello $name”
task method <<{
def name = ‘’'Android进阶之光
Android进阶解密
Android进阶?‘’’
println name
}
(2)List
Groovy没有定义自己的集合类,它在Java集合类的基础上进行了增强和简化。Groovy的List对应Java中的List接口,默认的实现类为Java中的ArrayList。
def number = [1, 2, 3]
assert number instanceof List
def linkedList = [1, 2, 3] as LinkedList
assert linkedList instanceof java.util.LinkedList
task method <<{
def number = [1, 2, 3, 4]
assert number [1] == 2
assert number [-1] == 4 //1
number << 5 //2
assert number [4] == 5
assert number [-1] == 5
}
def name = [one: ‘魏无羡’, two: ‘杨影枫’, three: ‘张无忌’]
assert name[‘one’] == ‘魏无羡’
assert name.two == ‘杨影枫’
注释1处的索引-1是列表末尾的第一个元素。注释2处使用<<运算符在列表末尾追加一个元素
其他
String a = ‘23’
int b = a as int
def c = a.asType(Integer)
assert c instanceof java.lang.Integer
文末
很多人在刚接触这个行业的时候或者是在遇到瓶颈期的时候,总会遇到一些问题,比如学了一段时间感觉没有方向感,不知道该从那里入手去学习,对此我整理了一些资料,需要的可以免费分享给大家
这里笔者分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司2021年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。
【视频教程】
天道酬勤,只要你想,大厂offer并不是遥不可及!希望本篇文章能为你带来帮助,如果有问题,请在评论区留言。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
在遇到瓶颈期的时候,总会遇到一些问题,比如学了一段时间感觉没有方向感,不知道该从那里入手去学习,对此我整理了一些资料,需要的可以免费分享给大家
这里笔者分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司2021年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。
[外链图片转存中…(img-kQmGlKEk-1714959021141)]
[外链图片转存中…(img-hT1I7DiN-1714959021141)]
【视频教程】
[外链图片转存中…(img-5xY6vWNU-1714959021141)]
天道酬勤,只要你想,大厂offer并不是遥不可及!希望本篇文章能为你带来帮助,如果有问题,请在评论区留言。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!