Skip to content

【优化】切换歌曲后第一时间的播放进度会被上一首数据污染 #16

@Theoneee

Description

@Theoneee

现在当前播放的数据是只有一个实例:

private PlayingMusic mCurrentPlay = new PlayingMusic("00:00", "00:00");

但是当切换歌曲时,只是更换了部分播放数据:

   public void setChangingPlayingMusic(boolean changingPlayingMusic) {
        mIsChangingPlayingMusic = changingPlayingMusic;
        if (mIsChangingPlayingMusic) {
            ...
            mCurrentPlay.setBaseInfo(mPlayingInfoManager.getMusicAlbum(), getCurrentPlayingMusic());
           ....
        }
    }

    public void setBaseInfo(B musicAlbum, M music) {
        //要用当前实际播放的列表,因为不同模式存在不同的播放列表
        this.title = music.getTitle();
        this.summary = musicAlbum.getSummary();
        this.albumId = musicAlbum.getAlbumId();
        this.musicId = music.getMusicId();
        this.img = music.getCoverImg();
        this.artist = (A) music.getArtist();
        this.music = music;
    }

这个时候的播放进度和时间是没有被重置的,分发当前播放音乐消息时会把上一首的播放数据也带过去,造成数据污染,
建议在更换歌曲时重置一下播放进度和时间:

   public void setChangingPlayingMusic(boolean changingPlayingMusic) {
        mIsChangingPlayingMusic = changingPlayingMusic;
        if (mIsChangingPlayingMusic) {
             // 重置播放时间和进度数据
            mCurrentPlay.setNowTime("00:00");
            mCurrentPlay.setAllTime("00:00");
            mCurrentPlay.setPlayerPosition(0);
            mCurrentPlay.setDuration(0);
            mCurrentPlay.setBaseInfo(mPlayingInfoManager.getMusicAlbum(), getCurrentPlayingMusic());
           ....
        }
    }

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions