2012-03-08 2 views
0

사용자 지정 음악 플레이어 컨트롤이있어서 재생 단추를 클릭하면 서비스가 시작되고 BroadcastReceiver가 등록됩니다. 서비스는 음악을 재생하고 음악 플레이어 컨트롤에서 UI를 업데이트하는 데 사용하는 음악 세부 정보를 브로드 캐스트합니다.사용자 지정 컨트롤에서 브로드 캐스트 수신기를 등록 취소하는 위치

public class MusicPlayer extends ViewFlipper implements OnClickListener 

{ 개인 브로드 캐스트 리시버 브로드 캐스트 리시버;

MusicPlayer(Context context, AttributeSet attrs) 
{ 
    //inflate the layout 
} 
public void onClick(View v) 
{ 
    if(v.getId() == R.id.musicplayerbtn) 
    { 
     // DO some work 
     // register receiver 
     broadcastReceiver = new BroadcastReceiver() 
     { 
      @Override 
      public void onReceive(Context context, Intent serviceIntent) 
      { 
       updatePlayer(serviceIntent); 
      } 
     }; 
     // Register receiver 
     getContext().registerReceiver(broadcastReceiver, new IntentFilter(MusicService.BROADCAST)); 

     //Start service 
    } 
} 
} 

내 앱에는 여러 개의 스크린이 있으며이 컨트롤을이 스크린에 플러그인하기 만하면됩니다. 한 활동에서 다른 활동으로 이동하는 경우 첫 번째 활동의 레이아웃에있는 음악 플레이어는 더 이상 보이지 않으며 BroadcastReceiver를 등록 취소해야한다는 것을 이해해야합니다.

사용자 정의 컨트롤에서 BroadcastReceiver를 어떻게 등록 취소합니까? Activity onPause() 메서드에서 등록을 취소하지 않는 것이 좋습니다.

답변

0

onDestroy 방법으로 수행해야합니다.

+0

감사합니다. 사용자 정의 컨트롤 코드를 활동 코드와 연결하지 않을 수있는 방법이 있습니까? – Rohit

관련 문제