음악 재생 - Service 사용 X

제가 작성한 tistory글의 마이그레이션입니다.

도입

이번 포스팅에서는 지난 포스팅에 이어 음악 플레이어에서 음악을 재생할 예정이다.

데이터의 흐름


음악 재생 Activity에 데이터를 전달 방법은
ListActivity가 Fragment에 모든 데이터를 전달하고 클릭을 통해 선택된 데이터의 Position(음악의 순번)을 PlayMainViewActivity에 전달한다.
(Fragment를 통해 PlayMainViewActivity에 전달하지 않고 ListActivity를 거쳐 전달한 이유는 Fragment는 View의 역할, ListActivity는 Controller의 역할로 나누기 위해 Interface를 사용했다.)

문제점 및 해결

처음 설계 때, ListActivity에서 PlayMainViewActivity로 데이터를 전달할 때 Model(Music)을 전달했다.

하지만 BaseActivity를 통해 ListActivity와 PlayMainViewActivity 모두 Model(Music)의 데이터를 가지고 있기 때문에 Position만 전달하는 것이 효율적이라고 생각해 설계를 변경하였다.

AS-ISTO-BE

코드

public class PlayMainViewActivity extends BaseActivity {
    // ...
    public void initData() {
        // Intent를 통해 position을 전달 받음
        currentPosition = getIntent().getIntExtra("position", 0);
        
        // 전달 받은 position으로 현재 음악 설정
        currentMusic = musicDataController.getList()
                                          .get(currentPosition);
 
        // PlayerController에 현재 음악 설정
        PlayerController playerController = PlayerController.getInstance();
        playerController.setMusic(this, currentMusic.getMusicUri());
    }
    // ...
}

스크린샷

좋은 웹페이지 즐겨찾기