途中で止まると困る重い処理を行う場合は、ActivityからServiceを起動し、Serviceから別スレッドを起動し、その別スレッド上で処理を行わなければならない。
という考えはあっていますでしょうか?
- Androidアプリは基本的にはシングルスレッドで、ServiceもUIスレッドで実行される。
- MessageQueueはスレッドに1つであり、
UIスレッドでActivityとServiceが動作しているときは、ActivityとServiceとで1つのMessageQueueを共有している。
- 重い処理を行う場合、Serviceを使用したとしてもUIはフリーズする。
- Activityがバックグラウンドへ移動すると、そのActivityから起動した別スレッドも一緒に止まる。
よって、ユーザー操作により途中で止まってしまうと困る処理で、しかも非常に重い処理を行う場合は、
ActivityからServiceを起動し、Serviceから別スレッドを起動し、その別スレッド上で処理を行わなければならない。
ネットや本を読んでいて、このように理解したのですが、自分では正しいかどうかよくわからないので教えてください。
なにか結果を返す場合は、別スレッドからServiceへHandlerを使って返して、ServiceからActivityへBroadcastIntentを使って返す。
という流れでしょうか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/04/12 23:59 編集