41

ここで、Dianneは、を介してオブジェクトを保持する古いメソッドは、onRetainNonConfigurationInstance()構成の変更時にFragmentインスタンスを保持できるという事実によって廃止されたと述べています。

そして、ここでは、フラグメントのAPIデモで、構成変更後にスレッドを維持するためにこのメソッドを使用する方法を示しています。

構成の変更中に、フラグメントがどのアクティビティにもアタッチされていない可能性があり、スレッドがその作業を完了している場合、アクティビティがアタッチされてwait()いないときに結果を提供しようとしないように呼び出すことができます。これは非常に便利であり、Androidの向きの変更に伴う問題の1つを軽減するための優れた方法だと思います。

ただし、スレッドライブラリ(たとえば、スレッドエグゼキュータを使用するAPIライブラリ)を使用していて、そのスレッドにアクセスできないwait()場合、この新機能をどのように活用すればよいでしょうか。

アクティビティが添付されていないときにメッセージが配信されないようにするにはどうすればよいですか?

新しいアクティビティが添付されたときにメッセージをキューに入れて配信する方法を考えていましたが、皆さんに連絡して、すでにいくつかの解決策を考え出しているかどうかを確認したいと思いました。

また、LoaderManager APIを調べたところ、アクティビティが表示されたときにロードする必要のあるデータには適しているようですが、ボタンを介してログインするなどのイベントベースのデータには適していません。

4

1 に答える 1

4

この問題は、ラッチなどの高レベルの同時実行ユーティリティを使用して回避できます。このユーティリティでは、新しいアクティビティがアタッチされるまで(メッセージキューにアクセスして結果を配信しようとする直前に)すべてのスレッドを待機させることができます。

アクティビティがアタッチされたら、ラッチを解放して、すべてのスレッドが結果を配信できるようにします。

于 2011-05-23T08:56:06.397 に答える