Android 异步任务无限循环
当我的程序在Android 异步任务无限循环,android,json,android-asynctask,Android,Json,Android Asynctask,当我的程序在doInBackground()方法中时,我正在从doInBackground()中的JSON API中检索一些数据。我的日志表明数据已被检索,但doInBackground()仍在无限循环中运行。 我怎样才能阻止这种循环 这是我的doInBackground()编码: @Override protected String doInBackground(String... DATA) { // TODO Auto-generated method stub TYPE
doInBackground()
方法中时,我正在从doInBackground()
中的JSON API中检索一些数据。我的日志表明数据已被检索,但doInBackground()
仍在无限循环中运行。
我怎样才能阻止这种循环
这是我的doInBackground()
编码:
@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;
}
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();
}
等等…等等。。。废话 如果条件错误,您的。。应该是,
if(TYPE.equals("reservation_page"))
不是
使用
字符串类的.equals()
比较两个字符串 废话……废话。。。废话
如果条件错误,您的。。应该是,
if(TYPE.equals("reservation_page"))
不是
使用字符串类的.equals()
比较两个字符串 您是否正在进入循环,或者可能是jParser.getJSONfromUrl(URL+memberId)
永远等待URL的响应?只需运行调试器,找出错误应该不会有问题。您甚至进入了循环,或者可能是jParser.getJSONfromUrl(URL+memberId)
永远等待URL的响应?只要运行调试器,找出错误应该不会有问题。Hmm,doInBackground方法中只有一个循环。reservation.length()的典型值是什么?我建议您将.I()您的length()和int I记录在循环中,看看其中发生了什么。在doInbackground中退出循环后放置一个断点,在onPostExecute中放置另一个断点,您很快就会发现I thinkHmm,doInbackground方法中只有一个循环。reservation.length()的典型值是什么?我建议您将.I()your length()和int I记录在循环中,看看其中发生了什么。在doInbackground中退出循环后放置一个断点,在onPostExecute中放置另一个断点,您很快就会发现我想我的doInbackground()中有许多if语句其余的if语句工作正常,只有这一条是login in循环..我的doInBackground()中有许多if语句,其余的if语句工作正常,只有这一条是login in循环。。