2013年4月12日金曜日

ServiceとIntentServiceの差異

ServiceとIntentServiceの差異
  Service IntentService
Intentの処理 並行処理 逐次処理
抽象メソッド onBind(Intent) onHandleIntent(Intent)

 IntentServiceは受け取ったInetntを内部にキューイングし、逐次処理を行うという特徴を持ちます。そして、キューから処理がなくなったら自動的にサービスが終了します。

 例えば、アプリ終了時のデータ保存処理をIntentServiceで行うことで、アプリは即座に終了し、バックグラウンドでデータ保存処理が行えます。AsyncTaskや別スレッドではこうした処理は行えません。

 IntentServiceを実装する際の注意点として、onCreate()、onDestory()、onStart()、onStartCommand()をオーバーライドしないことです。どうしてもそのタイミングで何か処理を行いたいのであれば、必ずスーパークラスの同一メソッドを呼び出すようにします。そうしなければ期待通りに動作しなくなります。

 Toastを表示するサービスとしてIntentServiceを使用することを試みましたが、Toast表示とIntentServiceは相性が悪く、Toastが表示される前にIntentServiceが終了してしまい、Toastは表示されませんでした。IntentServiceから他のサービスを呼び出す際には注意が必要です。

0 件のコメント:

コメントを投稿