gpt4 book ai didi

android - 从服务中获取对 ProgressDialog 的引用

转载 作者:行者123 更新时间:2023-11-30 04:03:47 26 4
gpt4 key购买 nike

我需要从我的音乐服务中设置 ProgressDialog.dismiss。我尝试使用

设置 AsyncTask
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();
}

这工作正常,但它在 startService(i) 调用的 开始 关闭对话框,因此对话框立即消失。然后我尝试从 MusicService 服务访问我的 ProgressDialog:

我的主要 Activity 中的 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?

最佳答案

使用 hadler http://developer.android.com/reference/android/os/Handler.html在您的 Activity 中创建处理程序,然后启动您的对话并将处理程序传递给服务。当服务启动时调用 hanler.handleMessage(message)。像这样的 Progress dialog in Android

关于android - 从服务中获取对 ProgressDialog 的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12080402/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com