0
내가이 개 활동이있는 라디오 내가 놀고있어 확인 :안드로이드
활동 A - 목록보기/어댑터를
활동 B - 활동가에서 라디오
, 나는 라디오와 B 연극을 선택 그 라디오 (서비스).
하지만 목록에서 다른 라디오를 선택할 때마다 활동 B가 다시 시작되고 라디오가 중지되고 다시 재생됩니다.
상황 예 :
# 1 - I'm playing Radio X, I choose X on the list
# 2 - A new instance is created (service is in onCreate() of Activity B)
# 3 - Radio X playing (play() is in onStart() of service)
# 4 - I go back to the list
# 5 - I want to play Radio Y
# 6 - A new instance is created (service is in onCreate() of Activity B)
# 7 - Radio Y playing (play() is in onStart() of service)
# * In onCreate() of service isn't doing nothing
모든 것은 괜찮지 만, 나는 목록에 돌아가서 동일한 무선을 선택하면 어떤 일이 예를 들어, 일 :
# 1 - Radio Y playing
# 2 - I go back to the list
# 3 - I wanna go to Radio Y again
# 4 - A new instance is created (service is in onCreate() of Activity B) (I don't want this)
# 5 - Radio Y stops and plays again (I don't want this)
내가 가지고 싶은
라디오가 재생 중인지 확인하는 방법은 제가 가고 싶은 라디오입니다. 새 인스턴스를 만들지 않고 동일한 라디오를 다시 재생하지 마십시오.
편집 :
ListView에
if (item == "Radio 1"){
Intent intent = new Intent(getBaseContext(), Radio.class);
intent.putExtra("radio", "http://test1.com");
this.startActivity(intent);
} else if (item == "Radio 2"){
Intent intent = new Intent(getBaseContext(), Radio.class);
intent.putExtra("radio", "http://test2.com");
this.startActivity(intent);
}
Radio.java
@Override
public void onCreate(Bundle icicle) {
requestWindowFeature(Window.FEATURE_LEFT_ICON);
super.onCreate(icicle);
setContentView(R.layout.main);
Intent music = new Intent(getApplicationContext(), Service.class);
music.putExtra("url", this.getIntent().getStringExtra("radio"));
startService(music);
}
Service.java
@Override
public void onStart(Intent intent, int startid) {
Multiplayer m = new MultiPlayer();
m.playAsync(intent.getExtras().getString("url"));
}
고마워! 하지만이 코드가 어떻게 도움이 될지 아직 이해하지 못했습니다. 이 코드는 인스턴스가 이미 존재하는지 확인한 다음 새로운 스트리밍 링크가 동일한 스트리밍 링크의 서비스인지 확인한 다음, 그렇지 않은 경우 라디오를 중지하고 새 링크로 시작하는 것입니다. – Felipe
나는 나의 질문을 편집했다, 나는 묶는 것을 사용하지 않았다, 그것은 간단한 서비스이었다. 이런 방식으로 항상 라디오의 새로운 인스턴스를 만들고 항상 라디오의 onCreate() 메소드에 들어가서 항상 onStart() 메소드를 입력합니다. 이 간단한 방법을 갖고 싶습니다 :/ – Felipe
서비스가 이미 실행되고 있으면 다시 작성되지 않습니다. 따라서 서비스의 onStart에서 새 URL에 대한 현재 URL을 확인하면 아무 것도하지 않을 수 있습니다. – RvdK