RxPermission
1.基本概念
RxPermissions基于RxJava,用于在开发过程中进行权限管理。
android运行时权限,android 6.0以后加入的新机制,可以在app运行时动态进行权限设置
2.RxPermissions的使用
依赖包
compile 'com.tbruyelle.rxpermissions:rxpermissions:0.9.0@aar'
Manifest.xml中添加权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
新建RxPermissions对象
RxPermissions rxPermissions=new RxPermissions(this);
rxPermissions.setLogging(true);
rxPermissions.setLogging(true)进行权限日志跟随
RxView.clicks(findViewById(R.id.enableCamera))
.compose(rxPermissions.ensureEach(Manifest.permission.CAMERA))
.subscribe(new Action1<Permission>() {
@Override
public void call(Permission permission) {
if (permission.granted) {
//释放相机
releaseCamera();
camera = Camera.open(0);
try {
camera.setPreviewDisplay(surfaceView.getHolder());
camera.startPreview();
} catch (IOException e) {
e.printStackTrace();
}
} else if (permission.shouldShowRequestPermissionRationale) {
Toast.makeText(MainActivity.this,
"Denied permisson without ask never again",
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this,
"Denied permisson,Can't enable the Camera",
Toast.LENGTH_SHORT).show();
}
}
}, new Action1<Throwable>() {
@Override
public void call(Throwable throwable) {
}
},
new Action0() {
@Override
public void call() {
Log.d("complete","OnComplete");
}
}
);
使用RxBinding进行Button按钮绑定,compose为Obserable对象的转换,从一种状态转换为另一种状态。点击按钮打开摄像头,因而请求摄像头权限。
RxLifecyle
1.基本概念
RxLifeCycle基于RxJava,用于android生命周期控制的框架。RxLifeCycle提供了基于activity和fragment生命周期事件的自动完成队列。用于避免不完整回调导致的内存泄漏。
在RxLifeCycle包里封装了一些RxActivity和RxFragment,开发者可以直接继承,从而进对activity和fragment的生命周期进行管理
2.用法
依赖包
compile 'com.trello:rxlifecycle-android:1.0'
compile 'com.trello:rxlifecycle-components:1.0'
//Toolbar的item点击
RxToolbar.itemClicks(rxBindingToolbar).compose(RxLifecycle.bindUntilEvent(behaviorSubject, ActivityEvent.DESTROY)).subscribe((menuItem -> {
Snackbar.make(rxBindingToolbar, "toolbar " + ((MenuItem) menuItem).getTitle(), Snackbar.LENGTH_SHORT).show();
}));
使用compose, 对订阅事件的生命周期进行绑定,当activity销毁时自动解除绑定