2017-12-20 12 views
0

たとえば、私は終了して結果を返します。これはメソッドonActivityResultによって返されます。 onActivityResultによって結果が提供される前にどのように待ってから反応ストリームを続行できますか?RxJavaで別のメソッドが呼び出されるまでの待ち時間

public class TestActivity extends AppCompatActivity { 

    ... 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     // receiving result here 
    } 

    private Single<Data> loadData() { 
     return Remote.getInstance().getData() 
       .flatMap(data -> { 
        // do something 
        Intent intent = new Intent(TestActivity.this, OtherActivity.class); 
        startActivityForResult(intent, 0); 

       }) // how can I receive the result from the onActivityResult here? 
    } 
} 
+0

ここで、「//どのようにして結果を受け取ることができますか」、「何か」をしたいと思っているところです。なぜonActivityResultメソッド内で何か「何か」のアクティビティを続行しないのですか? –

答えて

0

それは私がこれに対して強くアドバイスしたいonActivityResult()に通知しますし、どのあなたが元のコールでのflatMap()をいただきたいしPublishSubjectしかしを使用することによって、たとえばことが可能です。理由は次のとおりです。

ActivityonActivityResult()を受け取った場合、その間に設定変更やメモリの負荷などが発生したため、ゼロから再作成された可能性があります。これは、Singleサブスクリプションがアクティブでなく(onDestroy()以上、onStop())、以前のアクティビティインスタンスがまだアタッチされているものにリークされたことを意味します(サブスクライブしなかった場合)。

したがって、ストリーム(および前述のPublishSubject)は、保持されているフラグメントのように、アクティビティの再現を生き延びるコンポーネント内に存在するはずです。その結果をストリームに通知するには、onActivityResult()を呼び出す必要があります。ここでsome exampleは、保持されているフラグメントとRxJavaがどのように連携できるかを示します。

関連する問題