2010-10-10 6 views
0

lorsque ma tâche asynchrone est exécutée, il bloque complètement l'application Voici le code de la classe. Il se trouve à l'intérieur de ma classe d'activité principale. Je suis novice en threading, donc désolé si j'ai fait quelque chose de ridicule lol, je ne comprends pas tout à fait.Aide avec la tâche asynchrone, se bloque sur .execute()

EDIT:

private class TeamSearchTask extends AsyncTask<String,Void,Void> { 

    CharSequence nfo; 
    String [] matches; 
    protected Void doInBackground(String... teamNumber) 
    { 
      //Team information ------------------------------------------------------------------------------------ 
      //Array of team data 
      String [] data = APIconnection.getTeams(teamNumber[0], ""); 

      //Display basic team info 
      nfo = ("\nFormal Team Name:\n" + data[1] + 
        "\n\nLocation:\n" + data [3] + ", " + data[4] + ", " + data[5] + 
        "\n\nRookie Year:\n" + data[6] + 
        "\n\nRobot Name:\n" + data[7] + 
        "\n\nWebsite:\n" + data[8] + "\n\n\n\n\n\n\n\n\n"); 

      //Make match archive -------------------------------------------------------------------------------------- 

      String [] events = APIconnection.getEventIdsByYear(year1); 
      String [] matches = new String [(events.length*11)];; 

      for (int i = 0; i<events.length; i++) 
      { 
       matches[(i*11) + i] = APIconnection.getMatches2(teamNumber[0], events[i] ,"","")[i];    
      } 
      return null; 
    } 

    protected void onProgressUpdate(Void...voids) 
    {} 

    protected void onPostExecute(Void result) { 
     info.setText(nfo); 
     matchArchive(matches); 
    } 
} 
+0

La "pile" que vous montrez est juste une infime partie de la trace de la pile d'exception. S'il vous plaît nous montrer le crash complet afin que nous puissions vous aider. Vous devriez au moins regarder le type d'exception levée pour voir ce qui pourrait être à l'origine (null pointeur? Array index hors limites? Etc.) –

+0

@Romain Guy J'ai un bloc try catch qui imprime l'erreur (Exception e, alors il imprime e.toString() mais il ne fonctionne pas, il se bloque complètement – Nick

+0

Il doit y avoir quelque chose dans les journaux. –

Répondre

1
titlets.setText(ttl.toString()); 

Ne touchez pas l'interface utilisateur dans les différents éléments fil puis-fil de l'interface utilisateur. Vous pouvez utiliser Activity :: runInUiThread (Runnable r) ou Handler :: post (Runnable r). Dans le second cas, le gestionnaire devrait être jumelé avec le fil d'interface utilisateur.

0
private class TeamSearchTask extends AsyncTask<String,Void,Void> { 
    private String[] data; 
    protected Void doInBackground(String... teamNumber) { 
     // Do your background work! No UI-stuff here!! 
     data = APIconnection.getTeams(teamNumber[0], ""); 

     return null; 
    } 
    protected void onPostExecute(Void result) { 
     // Do all UI related stuff here, it's executed when the doInBackground is finished 
    } 
} 

modifier: Mon mauvais, corrigé l'erreur avec onPostExecute. Vous devez utiliser Void au lieu de que vous utilisez

extends AsyncTask<String,Void,Void> 

qui signifie paramètre d'entrée est une chaîne, type de paramètre Progress (en onProgressUpdate) et le 3ème est le résultat.

+0

Même les autres données XML que je dois obtenir? – Nick

+0

Non, juste le code Java bien sûr (celui que vous avez fait dans doInBackground) qui est lié à votre tâche – Tseng

Questions connexes