经常见到removeTracks_l 和 removeTrack_l , 前者并不是真的把Track 给remove掉,只有再Terminated的情况下,才会去removeTrack_l
1,Thread::PrepareTracks_l -> tracksToRemove.add(track) ->removeTracks_l(tracksToRemove)
// 把track加入到remove队列里边, 并再结尾的时候removeTracks_l
2, 当只有teminated的情况下, 才会去做removeTrack
// removeTracks_l() must be called with ThreadBase::mLock held
void AudioFlinger::PlaybackThread::removeTracks_l(const Vector< sp<Track> >& tracksToRemove)
{
for (const auto& track : tracksToRemove) {
mActiveTracks.remove(track);
ALOGV("%s(%d): removing track on session %d", __func__, track->id(), track->sess