gpt4 book ai didi

android - runonuithread 未从 asynctask doinbackground 调用

转载 作者:行者123 更新时间:2023-11-30 03:02:17 25 4
gpt4 key购买 nike

我有多个 progressbars,它们添加到 fragment 中,并在 asynctask 中更新。现在我想在完成时替换并重置 progressbar 。我启动了一个新的 asynctask 来获取其他相关内容,并在其 postexecute 中更新了 UI。我就是这样做的:

//my asynctask to update the progressbar
@Override
protected Integer doInBackground(String... arg0) {
// TODO Auto-generated method stub
// display the images in now playing
while (ScheduleManager.isScheduleRunning) {
Iterator iterator = nowPlayingMediaSet.entrySet().iterator();
// set images on now playing
for (int i = 0; i < btnImgNowPlaying.length && iterator.hasNext(); ++i) {
Map.Entry mEntry = (Map.Entry) iterator.next();
Show mShowNowPlaying = (Show) mEntry.getKey();
// get show status
mProgressStatus[i] = ScheduleManager
.getCurrentPlayingShowStatus(mShowNowPlaying);

if (mProgressStatus[i] > 100) {
this.newSchedule = (ChannelSchedule) mEntry
.getValue();
// get now playing show and replace it
this.newShow = ScheduleManager
.getNowPlayingShow(newSchedule.getListOfShows());
iterator.remove();
final int index = i;
FragmentTvGuide.GetParentActivity().runOnUiThread(
new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
new ScheduleListnerTask(
btnImgNowPlaying[index])
.execute(newShow
.getShowThumb()); //does not get invoked
}
});
this.newShowAdded = true;
}
// Update the progress bar

}
if (newShowAdded){
this.nowPlayingMediaSet.put(newShow, newSchedule);
newShowAdded = false;
}
publishProgress(mProgressStatus);
// sleep 1 second to show the progress
try {
Thread.sleep(20000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
return null;
}

//this is how get the parentactivity from fragment
//in onactivitycreated
context = getActivity(); //context is static
public static Activity GetParentActivity(){
return (Activity) context;
}

不知道这里出了什么问题?有什么想法吗?

编辑

这是我要调用的 asynctask:

public class ScheduleListnerTask extends AsyncTask<String, Void, Bitmap> {

ImageButton btnImage;
public ScheduleListnerTask(ImageButton btnImage){
this.btnImage = btnImage;
}

@Override
protected Bitmap doInBackground(String... params) {
// TODO Auto-generated method stub
String urldisplay = params[0];
Bitmap mIcon11 = null;
ImageLoader iLoader = ImageLoader.getInstance();
try {
mIcon11 = iLoader.loadImageSync(urldisplay);
} catch (Exception e) {
Log.e("Error", "image download error");
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return mIcon11;
}

@Override
protected void onPostExecute(Bitmap result) {
// TODO Auto-generated method stub
btnImage.setImageBitmap(result);
}
}

最佳答案

我想你忘了在新任务上调用 execute()...编辑:好的,对不起,你没有......

但是我发现通过在 UIthread 上运行它来从另一个异步任务开始一个新的异步任务有点奇怪......你为什么不在此时发布进度,并从 onprogressupdated 开始新任务......?

关于android - runonuithread 未从 asynctask doinbackground 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22353294/

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