質問: MainActivity → SubActivity と遷移するプログラムです。 MainaActivity内でスレッドAをたちあげます。 そのスレッドAは、どこかのネット上の情報をどんどん拾って蓄積していくスレッドとします。 その後、SubActivityに遷移して、スレッドAの情報をSubActivity上に表示する場合の、MainActivityからSubActivityスレッドの受け渡し方法がわかりません。 単純にSerializableしたスレッドAを、 intent.putExtraで吐き出して、SubActivityの方で getIntent().getSerializableExtra で受け取る。 のではうまくいかないようです。 皆さんは、どうしてあるでしょうか?
回答: 2つ方法があります。 (1)チョイ処理であれば,staticクラスに処理をさせます。 かりに,Activity1でMyStaticWorker.start()みたいなメソッドを呼び出して,そのメソッド内では独自スレッドの走る処理が始まったとしましょう。 Activity2に遷移したあと,MyStaticWorker.end()のように呼び出して スレッド内での処理の結果をもらう事ができます。 コード量も少なくて済みます。 (2)staticクラスを使う方法は,アプリの構造上,あまり安全ではありません。 まじめにアクティビティをまたいで非同期処理を行なうためには,Serviceを使います。 これなら,画面が変わっても裏側でバッチ処理が動き続けますから,複数アクティビティから単一スレッドへのアクセスも安定して行なえます。ただしコード量は多くなります。