2014-01-13 2 views
2

Я пытаюсь связаться с моей базой данных с помощью .php Он работает нормально при первом запуске ASYNC, хотя во второй раз я его запускаю (без выхода из приложения) приложение вылетает (возможно, сообщение об ошибке из LogCat)AsyncTask сделать сбой приложения

А также по какой-то причине он не будет вводить петлю while. Я написал код, как это много раз, и это получилось просто отлично, хотя и не в этот раз.

Код:

class LOAD_USERS extends AsyncTask<String, Void, Void> 
{ 
    //Internet Input 
    URL url; 
    InputStream iS; 
    InputStreamReader iSR; 
    BufferedReader r; 

    //Variables 
    List<String> Users = new ArrayList<String>(); 
    public String s = ""; 
    public String DOWNLOAD_SUCCESS = "fail"; 
    String charset = "iso-8859-1"; 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     pDialog = new ProgressDialog(MenuActivity.this); 
     pDialog.setMessage("Letar efter spelare"); 
     pDialog.setIndeterminate(false); 
     pDialog.setCancelable(true); 
     pDialog.show(); 
    } 

    @Override 
    protected Void doInBackground(String... sUrl) { 
     try{ 
      url = new URL(sUrl[0]); 
      iS = url.openStream(); 
      iSR = new InputStreamReader(iS, charset); 
      r = new BufferedReader(iSR); 

      Users.clear(); 

      while((s = r.readLine()) != null) 
      { 
       Users.add(s); 
       DOWNLOAD_SUCCESS = "success"; 
      } 
     }catch(Exception e) 
     { 
      Log.e(e.toString(),e.toString()); 
     } 

     return null; 
    } 

    @Override 
    protected void onPostExecute(Void result) 
    { 
     super.onPostExecute(result); 
     pDialog.dismiss(); 
     if(DOWNLOAD_SUCCESS.equalsIgnoreCase("success")) 
     { 
      MenuActivity.this.CheckValidation(); 
     } 
     else if(DOWNLOAD_SUCCESS.equalsIgnoreCase("fail")) 
     { 
      Toast.makeText(getBaseContext(), "Check Your Internet Connection", Toast.LENGTH_SHORT).show(); 
     } 

     DownloadComplete = true; 
    } 
} 

Если бы вы могли поймать свою ошибку, это было бы здорово. Спасибо!

+0

Почему вы не можете уловить ошибку с logcat? – bigstones

ответ

0

Я предполагаю, что задачи Async созданы для запуска один раз, что означает, что вам нужно создать новый экземпляр вашего класса.

+0

Спасибо, сэр, никаких проблем с сбоем больше :) – user3191769

+0

Все еще проблема с моим while-loop. Как я уже упоминал, он не вводит его. – user3191769

+0

Я думаю, что это проблема синтаксиса, хотя и не уверена. –

1

Из (секций правил многопоточности) AsyncTask documentation:

Задача может быть выполнена только один раз (. Исключение будет сгенерировано, если второе исполнение попытки)

+0

Спасибо, сэр, никаких проблем с крушением больше :) – user3191769

Смежные вопросы