Avoid using onActivityResult() to improve code readability
原理讲解文章:避免使用onActivityResult,以提高代码可读性
配合AOP的实践文章:一个注解搞定登录注册、实名认证及购买vip等业务流程
无需重写onActivityResult,以回调的方式拿到startActivityForResult的结果,解决了以往跳转页面和处理结果分离的痛点。
同时无需重写onActivityResult也意味着只要你可以拿到一个Activity实例,就可以通过它startActivityForResult,甚至它是一个第三方库中的Activity也一样。
支持RxJava方式调用
in your root build.gradle
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
add to dependencies
dependencies {
implementation 'com.github.AnotherJack:AvoidOnResult:1.0.0'
}
callback方式
ew AvoidOnResult(activity).startForResult(XXActivity.class, new AvoidOnResult.Callback() {
@Override
public void onActivityResult(int resultCode, Intent data) {
if (resultCode == Activity.RESULT_OK){
// get your data from intent
}else {
}
}
});
rxjava方式
ew AvoidOnResult(activity).startForResult(MainActivity.class)
//可自由变换
.filter(new Predicate<ActivityResultInfo>() {
@Override
public boolean test(ActivityResultInfo activityResultInfo) throws Exception {
return activityResultInfo.getResultCode() == Activity.RESULT_OK;
}
})
.subscribe(new Observer<ActivityResultInfo>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(ActivityResultInfo activityResultInfo) {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});