android - runonuithread 未从 asynctask doinbackground 调用

标签 android android-fragments android-asynctask

我有多个 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/

相关文章:

java - 如何让 EditText view 在 Presentation(Duel Screen) 中获得焦点和 SoftKeyboard 输入?

java - finish() 方法在 AsyncTask 内部不起作用

android - 在 AsyncTask 中获取 IndexOutOfBoundException

android - 将对象从 Activity 传递到 fragment 引用或值吗?

onCreate 的 java.lang.NoSuchMethodException

android - 从自定义 View 启动 AsyncTask 的最佳实践

Android如何在按下或聚焦时使TextView文本加粗

android - Android 4 上的 Http Live Streaming( Ice Cream Sandwich )

iphone - 跨平台移动开发做了哪些工作?

java - 按照拍摄图像的顺序从图库加载图像?