1、anonymous 匿名的;field 領域 on fields 字段上
2、Butterknife的問題
使用@OnClick的時候遇見程序Crash的情況,報錯信息:
java.lang.BootstrapMethodError: Exception from call site #1 bootstrap method
3、ButterKnife使用心得:
配置問題:兩個build.gradle的配置分別是
project:
dependencies { classpath 'com.android.tools.build:gradle:2.3.3' classpath 'com.jakewharton:butterknife-gradle-plugin:9.0.1-rc3'}
Module:
apply plugin: 'com.jakewharton.butterknife'
compile 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
使用問題:
Activity中使用ButterKnife.bind(this)來綁定
使用@BindView、@OnClick等注釋語言來綁定View
4、RxJava的配置
implementation 'io.reactivex.rxjava2:rxjava:2.2.0'
implementation 'io.reactivex .rxjava2:rxjava:2.x.x'
配置中會出現編譯錯誤
Failed to resolve: io
Show in File
rebuild 后即可解決問題
5、RxJava的簡單使用
Git/JakeWharton用例:
Observable.just("one", "two", "three", "four", "five") .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(/* an Observer */);
我的用例:
Observable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(ObservableEmitter<String> emitter) throws Exception {
}
})
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<String>() {
Disposable mDisposable;
@Override
public void onSubscribe(Disposable d) {
mDisposable=d;
}
@Override
public void onNext(String s) {
Uipart.setText(s);
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
}
6、Lambda表達式
”其实Lambda表达式的本质只是一个"
语法糖",由编译器推断并帮你转换包装为常规的代码,因此你可以使用更少的代码来实现同样的功能。“
Lambda表达式的语法
基本语法:
(parameters) -> expression
或
(parameters) ->{ statements; }
下面是Java lambda表达式的简单例子:
// 1. 不需要参数,返回值为 5 () -> 5 // 2. 接收一个参数(数字类型),返回其2倍的值 x -> 2 * x // 3. 接受2个参数(数字),并返回他们的差值 (x, y) -> x – y // 4. 接收2个int型整数,返回他们的和 (int x, int y) -> x + y // 5. 接受一个 string 对象,并在控制台打印,不返回任何值(看起来像是返回void) (String s) -> System.out.print(s)
下面是使用lambdas 来实现 Runnable接口 的示例:
// 1.1使用匿名内部类 new Thread(new Runnable() { @Override public void run() { System.out.println("Hello world !"); } }).start(); // 1.2使用 lambda expression new Thread(() -> System.out.println("Hello world !")).start(); // 2.1使用匿名内部类 Runnable race1 = new Runnable() { @Override public void run() { System.out.println("Hello world !"); } }; // 2.2使用 lambda expression Runnable race2 = () -> System.out.println("Hello world !"); // 直接调用 run 方法(没开新线程哦!) race1.run(); race2.run();