現在、別のプロセスで実行されるサービスがあります。これがメインアクティビティのコードです。
@Override
public void onStart() {
super.onStart();
// Start auto complete service.
autoCompleteServiceIntent = new Intent(AutoCompleteService.class.getName());
startService(autoCompleteServiceIntent);
bindService(autoCompleteServiceIntent, serviceConnection, 0);
}
@Override
public void onStop() {
super.onStop();
// Stop auto complete service.
unbindService(serviceConnection);
stopService(autoCompleteServiceIntent);
autoCompleteServiceIntent = null;
}
このサービスには以下の特徴があります。
- サービスは別のプロセスで実行されます。その理由は、大きなデータをメモリにロードするためです。サービスを別のプロセスで実行すると、メモリ制限を大きくすることができます。
- メインアクティビティが停止すると、サービスも停止します。
onStart / onStopペアでサービスを開始/停止する必要がありますか?または、onCreate/onDestroyでサービスを開始/停止しますか。
私が考えることができる良いことは、onStart / onStopのペアでコードを持っているとき、アクティビティが見えないときはいつでも、未使用のメモリをすぐに解放できることです。したがって、大規模なシステムリソースを解放します。onDestroyは、アクティビティが終了した場合でも、常にすぐに呼び出されるわけではないことに注意してください。
悪い点は、HOMEを押して頻繁に戻ると、サービスがメモリのロード/アンロードを頻繁に実行することです。これにより、アプリケーションのパフォーマンスが大幅に低下する可能性があります。