OnResultBus
基于RxJava的OnActivityResult回调方案,提高代码内聚性,告别onActivityResult()中恶心的switch。
引入
project build.gradle:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
app build.gradle:
dependencies {
implementation 'com.github.SpannerBear:OnResultBus:1.0.1'
implementation "io.reactivex.rxjava2:rxjava:2.2.2"
}
使用
首先在App的BaseActivity相应位置中加入如下代码:
public abstract class BaseActivity extends AppCompatActivity{
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//消息转发
OnResultBus.post(this,requestCode,resultCode,data);
}
@Override
protected void onDestroy() {
super.onDestroy();
//对资源销毁
OnResultBus.onDestroy(this);
}
}
接下来在本来要调用startOnResult()的地方使用:
OnResultBus.start(MainActivity.this)
.call(new Intent(MainActivity.this,EditActivity.class))
.subscribe(new Consumer() {
@Override
public void accept(Result result) throws Exception {
if (Activity.RESULT_OK == result.resultCode) {
//do something
}
}
});