我实现了以下代码。
起初还可以,但是随着时间的流逝并添加了其他代码,它变得混乱了。
所以我决定使用lambda。
但是我不知道如何使用lambda进行转换。 我尝试了很多方法,但是没有用。
如何转换?和 如果有地方可以看到下面的相关材料,请建议我。谢谢!
下面是我的代码
public void SaveBeaconId(){
myCompositeDisposable.add(BeaconService.getBeaconObservable()
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribeWith(new DisposableObserver<ProximityZoneContext[]>() {
@Override
public void onNext(ProximityZoneContext[] proximityZoneContexts) {
for(int i=0; i<proximityZoneContexts.length; i++) {
bId = proximityZoneContexts[i].getDeviceId();
if (!beaconList.contains(bId)) {
beaconList.add(bId);
Log.d("OnNext Beacon add: ", bId);
//PostFcmData(bId,FirebaseInstanceIDService.refreshedToken,"ScoreData");
}
}
for(int i=0; i<beaconList.size(); i++) {
Log.d("Beacon List "+i,beaconList.get(i));
}
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
})
);
}
final MyApplication application = (MyApplication) getApplication();
RequirementsWizardFactory
.createEstimoteRequirementsWizard()
.fulfillRequirements(this,
new Function0<Unit>() {
@Override
public Unit invoke() {
Log.d("app", "requirements fulfilled");
application.enableBeaconNotifications();
return null;
}
},
new Function1<List<? extends Requirement>, Unit>() {
@Override
public Unit invoke(List<? extends Requirement> requirements) {
Log.e("app", "requirements missing: " + requirements);
return null;
}
},
new Function1<Throwable, Unit>() {
@Override
public Unit invoke(Throwable throwable) {
Log.e("app", "requirements error: " + throwable);
return null;
}
});
答案 0 :(得分:2)
在Java 8中添加了lambda表达式。要使用lambda表达式,您需要在build.gradle
文件中执行以下操作
android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
添加了以上更改后,只需访问要转换为lambda的代码即可。您会看到一个黄色的灯泡出现。只需单击该按钮,您就会看到一个“替换为lambda”的选项。
单击它,您现在可以看到lambda表达式。
参考:https://developer.android.com/studio/write/java8-support#configuration
希望这个答案对您有帮助。