▽1
●
lang_and_engine ●50ポイント ベストアンサー |
2つ方法があります。
(1)チョイ処理であれば,staticクラスに処理をさせます。
かりに,Activity1でMyStaticWorker.start()みたいなメソッドを呼び出して,そのメソッド内では独自スレッドの走る処理が始まったとしましょう。
Activity2に遷移したあと,MyStaticWorker.end()のように呼び出して
スレッド内での処理の結果をもらう事ができます。
コード量も少なくて済みます。
(2)staticクラスを使う方法は,アプリの構造上,あまり安全ではありません。
まじめにアクティビティをまたいで非同期処理を行なうためには,Serviceを使います。
これなら,画面が変わっても裏側でバッチ処理が動き続けますから,複数アクティビティから単一スレッドへのアクセスも安定して行なえます。ただしコード量は多くなります。
Serializable なクラスであれば putExtra で Intent に落として、getSerializableExtra で取得できます。
http://d.hatena.ne.jp/hidecheck/20091008/1255023688
どのようにうまくいかないのかが分かりませんが、以下のような原因が考えられます。
・スレッドAが取得したデータをスレッドAのメンバに蓄積していない
・スレッドAが収集を完了する前にシリアライズしている