在呈现UI之前接收的广播

时间:2014-04-21 14:50:37

标签: android android-asynctask android-service android-imageview android-broadcast

在我的申请中,我的ListView包含TextView&一个或多个ImageViews

然后我调用一个网络服务,作为响应,我给出了TextView& URL图像的字符串(不是实际图像)。

我在AsyncTask中调用此网络服务。

postExecute()中,我设置了TextView,然后调用Service来获取图片内容。

在服务中,我在for-loop中使用ExecutorService逐个获取图像。

在驱动器中下载所有图片后,我发送broadcast通知我的fragment所有图片都已下载。

在片段onReceive()中,我在ImageViews中设置了图片。

问题有时候,甚至在呈现ImageView之前就会调用onReceive()。

所以我在ImageView上获得NullPointerException

我该如何解决这个问题。

我不愿意整合任何第三方图书馆,除非确实需要。

谢谢

2 个答案:

答案 0 :(得分:0)

boolean uiReady = false;
boolean imagesReady = false;

private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
    if(uiReady){
        // Set images
    }
    else {
        imagesReady = true;
    }
}
}

@Override
    public void onWindowFocusChanged(boolean hasFocus) {

        super.onWindowFocusChanged(hasFocus);
            if(imagesReady){
                // Set images
            }
            else {
                uiReady = true;
            }
        }

答案 1 :(得分:0)

activity-lifecycle中的哪个/何时是执行webservice调用的AsyncTask的开头?

如果在设置ImageView之后,开始是onCreate中的最后一个语句,则问题应该已经消失