Android - for循环提前终止

时间:2014-12-31 02:34:11

标签: java android json bitmap

我试图操纵JSONArray,rawJArr,(取自Reddit API),并获取url和位图(取自gfycat" API")每个对象创建一个listing实例的ArrayList(Highlight),这些实例将被转换为包含图片,简短描述和gfycat链接的CardView

try {

    int count = 0;
    int highlightMax;
    Bitmap bitmap = null;
    Highlight curHighlight;
    myJSON = new JSONObject(rawJSON);
    curJSON = myJSON.getJSONObject("data");
    rawJArr = curJSON.getJSONArray("children");

    String strHighlightNo =  mySPrefs.getString("pref_highlightNo", "notFound");

    if(strHighlightNo.equals("notFound")) {
        Log.w("FT", "shared pref not found");
        return null;
    }

    highlightMax = Integer.parseInt(strHighlightNo);

    Log.w("Arr Length", Integer.toString(rawJArr.length()));
    Log.w("Highlight No", Integer.toString(highlightMax));

    for(int i=0; i < rawJArr.length(); i++) {

        Log.w("Count", Integer.toString(count));
        Log.w("I", Integer.toString(i));

        if(count == highlightMax) {
            Log.w("FT", "Breakpoint reached!");
            break;
        }

        curJSON = rawJArr.getJSONObject(i).getJSONObject("data");

        String url = curJSON.getString("url");
        String[] parts = url.split("//");
        String imageUrl = "http://thumbs." + parts[1] + "-thumb100.jpg";

        try {
            bitmap = BitmapFactory.decodeStream((InputStream) new URL(imageUrl).getContent());
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }

        // if there is no available picture, then don't include one in the Highlight
        if(bitmap == null) {
            Log.w("FT", "Null bitmap");
            curHighlight = new Highlight(curJSON.getString("title"), url, null);
            listing.add(curHighlight);
            count++;
        } else {
            Log.w("FT", "Bitmap Available");
            curHighlight = new Highlight(curJSON.getString("title"), url, bitmap);
            listing.add(curHighlight);
            count++;
        }

    }


    } catch(JSONException e) {
        e.printStackTrace();
        return listing;
    }

然而,我的for循环太早终止了。我使用的当前JSONArray的长度为25,并且我指定了pref_highlightNo为15,但是我的for循环在6次迭代后终止。

for循环中的Log.w个测试记录相同的计数(计数:1,整数:1 - 计数:6,整数:6)。

我很难理解我的循环终止的原因:我的控制台上没有打印堆栈跟踪,我的应用程序也没有崩溃。

知道发生了什么事吗?

1 个答案:

答案 0 :(得分:0)

原来这个问题特定于我试图创建的最后一个url以获取所需的gfycat - 我没有任何代码来处理链接以http://www开头的情况。