このすばらしいブログ記事を読みましたAndroidアーキテクチャチュートリアル:バックグラウンドサービスを使用したアプリの開発(IPCを使用)
著者は、別のプロセスで一定の間隔内で実行されているツイート取得サービスを示しています。
サービスは無限に実行され続けます。プロセスを停止し、アプリの管理に移動してサービスを明示的に停止することが唯一の方法であることに気付きました。
これはバッテリーに優しい方法ではないことに注意してください。著者でさえ自分自身を主張します。
はい、Androidのバックグラウンドサービスにも暗い面があります。バックグラウンドで多くのことを行うサービスが多すぎると、電話の速度が低下し、バッテリーが消耗します。しかし、それは私がこの投稿で取り上げたかったことではないので、おそらく別の投稿でリソース管理のエチケットに戻るでしょう。
ただし、作成者はブログを更新しなくなりました。
を介してサービスを停止しようとしますTweetViewActivity
。
@Override
protected void onDestroy() {
super.onDestroy();
try {
api.removeListener(collectorListener);
unbindService(serviceConnection);
} catch (Throwable t) {
// catch any issues, typical for destroy routines
// even if we failed to destroy something, we need to continue destroying
Log.w(TAG, "Failed to unbind from the service", t);
}
// New code added by Cheok. Not working. Not sure why.
this.stopService(intent);
Log.i(TAG, "Activity destroyed");
}
しかし、それはうまくいきません。サービスがまだ実行されているのがわかります。終了したら、IPCサービスを停止する正しい方法は何Activity
ですか?上記の例の良いバッテリー節約戦略は何ですか?