AvoidOnResult
Introduction: Avoid using onActivityResult () to improve code readability
Tags:
原理讲解文章:避免使用 onActivityResult,以提高代码可读性
配合 AOP 的实践文章:一个注解搞定登录注册、实名认证及购买 vip 等业务流程
无需重写 onActivityResult,以回调的方式拿到 startActivityForResult 的结果,解决了以往跳转页面和处理结果分离的痛点。
同时无需重写 onActivityResult 也意味着只要你可以拿到一个 Activity 实例,就可以通过它 startActivityForResult,甚至它是一个第三方库中的 Activity 也一样。
支持 RxJava 方式调用
Setup
in your root build.gradle
allprojects { repositories { ... maven { url 'https://jitpack.io' } } }add to dependencies
dependencies { implementation 'com.github.AnotherJack:AvoidOnResult:1.0.0' }
Usage
callback 方式
new 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 方式
new 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() { } });
