今天在逛博客的时候,发现了很多关于lambda的字眼, 又不知道是什么意思, 就搜了一下相关的资料, 在此整理, 以便学习使用. 如有抄袭, 请大神们见谅!
AndroidStudio使用Lambda的配置
首先要保证你的JDK版本是1.8以上的.
查看JDK版本的方式 命令行 输入 java -version
新建一个项目,在project 的 build.gradle 文件中dependencies节点下添加下行代码
classpath 'me.tatarka:gradle-retrolambda:3.2.0'
build.gradle完整的格式:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
classpath 'me.tatarka:gradle-retrolambda:3.2.0'
}
allprojects {
repositories {
jcenter()
}
}
切换到moudle的build.gradle文件,添加一下代码:
apply plugin: 'me.tatarka.retrolambda'
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
moudle–build.gradle完整格式:
apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda'
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "cyx.com.lambda"
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.3.1'
testCompile 'junit:junit:4.12'
}
这是应该就可以使用Lambda表达式了.
Lambda在Android中的常见用法
常见的事件点击写法:
平时写法:
findViewById(R.id.tv).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "hello Lambda!", Toast.LENGTH_SHORT).show();
}
});
使用Lambda的 写法:
findViewById(R.id.tv).setOnClickListener(View ->
Toast.makeText(this, "hello Lambda!", Toast.LENGTH_SHORT).show()
);
开启一个线程:
java--
new Thread(new Runnable() {
@Override
public void run() {
//do something
}
}).start();
Lambda---
new Thread(()-> //do something).start();