내 음악 서비스에서 ProgressDialog.dismiss
을 설정해야합니다. 나는서비스에서 ProgressDialog에 대한 참조 얻기
final class TheTask extends AsyncTask<Void, Void, Void>{
ProgressDialog dialog = ProgressDialog.show(SomafmActivity.this, "",
"Loading. Please wait...", true);
@Override
protected void onPreExecute() {
dialog.show();
}
@Override
protected Void doInBackground(Void... params) {
final Intent i = new Intent(MusicService.ACTION_URL);
Uri uri = Uri.parse("http://sfstream1.somafm.com:8880");
i.setData(uri);
startService(i);
return null;
}
@Override
protected void onPostExecute(Void result) {
dialog.dismiss();
}
와 AsyncTask를 설정 시도하고 잘 작동하지만에 대화 상자를 일축 대화 상자가 즉시 사라집니다 있도록 startService (I) 호출의를 시작합니다. 그럼 나는 MusicService 서비스에서 내해서 ProgressDialog를 액세스하려고했습니다
내 주요 활동에해서 ProgressDialog 선언 :
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.somafm);
ProgressDialog dialog = ProgressDialog.show(SomafmActivity.this, "",
"Loading. Please wait...", true);
}
내 MusicService의 :
public void onPrepared(MediaPlayer player) {
// The media player is done preparing. That means we can start playing!
mState = State.Playing;
updateNotification(mSongTitle + " (playing)");
configAndStartMediaPlayer();
ProgressDialog dialog = (ProgressDialog) SomafmActivity.dialog; //This line I believe is wrong
dialog.dismiss();
}
하지만 LogCat에서 NullPointerException이 발생합니다. 스트림이로드되고 재생되기 전까지는 오류가 발생하지 않기 때문에이 위치에서 대화 상자를 닫으면 트릭이 수행됩니다.
제 질문은 내 음악 서비스에서 내 ProgressDialog를 제대로 참조해야합니까?
감사합니다. 이것은 훌륭하게 작동했습니다. –
마크 대답을 수락 함 –