12.28工作笔记

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();  
复制代码
posted @ 2019-01-10 16:53  dbsyd  阅读(257)  评论(0编辑  收藏  举报