Для связи между приложением и службой, почему я использую Bound службу, а не отправлять данные в Intent:Почему я должен использовать Bound Service?
mServiceIntent = new Intent(getActivity(), RSSPullService.class);
mServiceIntent.setData(Uri.parse(dataUrl));
я прочитал, что «Если служба уже запущена, она будет называться с onStartCommand(), чтобы выполнить новое намерение, но вторая копия не создается ». Это означает, что я мог бы посылать сообщения в этом намерении повлиять на прогресс на службу, это то, что делается в примере Google RandomMusicPlayer:
public void onClick(View target) {
// Send the correct intent to the MusicService, according to the
// button that was clicked
if (target == mPlayButton)
startService(new Intent(MusicService.ACTION_PLAY));
else if (target == mPauseButton)
startService(new Intent(MusicService.ACTION_PAUSE));
else if (target == mSkipButton)
startService(new Intent(MusicService.ACTION_SKIP));
else if (target == mRewindButton)
startService(new Intent(MusicService.ACTION_REWIND));
else if (target == mStopButton)
startService(new Intent(MusicService.ACTION_STOP));
else if (target == mEjectButton) {
showUrlDialog();
}
«Если вы просто отправляете намерения, которые обрабатываются службой, служба может уйти - потерять любое внутреннее состояние - между сообщениями». Я не уверен, что это правда, в документации говорится: «Android система будет пытаться сохранить процесс, обслуживающий службу, до тех пор, пока служба была запущена ИЛИ у нее есть клиенты, привязанные к ней ». – serenskye
Также см. этот [post] (http://stackoverflow.com/questions/5388915/can-started- and-bound-services-live-forever? rq = 1), что объясняет это красиво – serenskye
@serenskye: Служба всегда имеет право на сбор мусора. Однако, если он связан, гораздо меньше шансов быть собранным мусором, чем если бы он работал, потому что он был запущен в какой-то момент в прошлом. –