首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AsyncTask无限循环

AsyncTask无限循环
EN

Stack Overflow用户
提问于 2012-08-19 02:42:07
回答 2查看 1K关注 0票数 0

当我的程序使用doInBackground()方法时,我正在从doInBackground()中的JSON API检索一些数据。我的日志表明检索到了数据,但是doInBackground()并没有转到onPostExecute(),而是在无限循环中运行。我怎么才能停止那个循环呢?

这是我的doInBackground()代码:

代码语言:javascript
运行
复制
@Override
protected String doInBackground(String... DATA) {
    // TODO Auto-generated method stub
    TYPE = DATA[0];

if(TYPE=="reservation_page")
    {
        URL = DATA[1];
        jParser = new JsonParser();
        json = jParser.getJSONfromUrl(URL+memberId);
        try
        {
            JSONArray reservation = json.getJSONArray(TAG_RSVTION);
            for(int i = 0; i<reservation.length(); i++)
            {
                JSONObject r = reservation.getJSONObject(i);
                amount = r.getString(TAG_AMNT);
                gcpamount = r.getString(TAG_GCPAMNT);
                date1 = r.getString(TAG_DATE);
                month = r.getString(TAG_MNTH);
                year = r.getString(TAG_YEAR);
                time1 = r.getString(TAG_TIME);
                golfcourse_name = r.getString(TAG_GLFCRSNAME);
                no_of_player = r.getString(TAG_PLYRNO);

                HashMap<String, String> map = new HashMap<String, String>();

                map.put(TAG_AMNT, amount);
                map.put(TAG_GCPAMNT, gcpamount);
                map.put(TAG_DATE, date1);
                map.put(TAG_MNTH, month);
                map.put(TAG_YEAR, year);
                map.put(TAG_TIME, time1);
                map.put(TAG_GLFCRSNAME, golfcourse_name);
                map.put(TAG_PLYRNO, no_of_player);

                resvList.add(map);
                Log.v(TAG_LOG, "list: "+resvList);
            }
            Log.v(LoadingScreen.TAG_LOG, "reserv: "+reservation);
            Log.v(LoadingScreen.TAG_LOG, "name: "+golfcourse_name);
        }
        catch(JSONException e)
        {
            Log.v(LoadingScreen.TAG_LOG, String.valueOf(e));
        }
    }
    return null;
}

这是我的onPostExecute()代码:

代码语言:javascript
运行
复制
protected void onPostExecute(String result) {
    // TODO Auto-generated method stub
    super.onPostExecute(result);

if(TYPE=="reservation_page")
    {
        Intent in = new Intent(context, MyReservation.class);
        in.putExtra(TAG_MBRID, memberId);
        in.putExtra(TAG_AMNT, amount);
        in.putExtra(TAG_GCPAMNT, gcpamount);
        in.putExtra(TAG_DATE, date1);
        in.putExtra(TAG_DAY, day);
        in.putExtra(TAG_MNTH, month);
        in.putExtra(TAG_YEAR, year);
        in.putExtra(TAG_TIME, time1);
        in.putExtra(TAG_GLFCRSNAME, golfcourse_name);
        in.putExtra(TAG_PLYRNO, no_of_player);
        context.startActivity(in);
    }
    progress.dismiss();
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-19 03:14:27

Blah....Blah...诸如此类。

您的if条件是错误的..应该是这样的,

代码语言:javascript
运行
复制
if(TYPE.equals("reservation_page"))

代码语言:javascript
运行
复制
if(TYPE=="reservation_page")

使用String Class.equals()比较两个字符串。

票数 2
EN

Stack Overflow用户

发布于 2012-08-19 03:55:40

你甚至进入了循环,或者也许jParser.getJSONfromUrl(URL+memberId)会永远等待来自你的网址的响应?只需运行您的调试器,找出问题所在应该不成问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12021280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档