当BehaviorSubject的订阅中的Activity完成时,应用程序崩溃

时间:2019-09-23 09:06:24

标签: android android-intent rx-java rx-android activity-finish

在“ BehaviorSubject”的“ subcribe”中,接收“ ArrayList”作为处理数据的参数。 如果您尝试将接受的数据传递到Intent中并完成它,则该应用程序将停止。 有什么问题吗?

subject(requestData)
   .map(r->arrayList = r.getArrayList())
   .observeOn(Android.Schedulers.mainThread())
   .subscribe(r->{ finishWithData(r)});

private void finishWithData(r) {
   Intent intent = new Intent();
   intent.putExtra("array", r);
   setResult(Activity.RESULT_OK, intent);
   finish() // Here is Crash Point.
}

1 个答案:

答案 0 :(得分:0)

我建议从Disposable获取BehaviorSubject并将其放置在“活动”的onDestroy中。

Disposable disposable;


disposable = subject(requestData)
              .map(r->arrayList = r.getArrayList())
              .observeOn(Android.Schedulers.mainThread())
              .subscribe(r->{ finishWithData(r)});

@Override
protected void onDestroy() {
    disposable.dispose();
    super.onDestroy();
}