AsyncTask - Swich Case Problem in doinbackground-Methode

  • Antworten:0
Michael Stadelmeier
  • Forum-Beiträge: 4

12.01.2012, 14:21:18 via Website

Hi Forum,

ich habe ein "kleines" wenn auch ein sehr verwunderndes Problem in meinen Swich-Case:

1@Override
2 protected ArrayList<String[]> doInBackground(Task... params) {
3
4 task = params[0];
5
6 switch (task.id) {
7
8 case initialize:
9 dataHolder.clear();
10 ioc.onInitialize(task.sData);
11 ioc.init();
12
13 try {
14 dataHolder =ioc.getData();
15 } catch (IOException e) {
16 dataHolder.clear();
17 return null;
18
19 } catch (InterruptedException e) {
20 dataHolder.clear();
21 return dataHolder;
22 }
23 if(!dataHolder.isEmpty()){
24 initState = ACTION_OK;
25 return dataHolder;
26 }
27 break;
28
29default:
30 break;
31 }
32
33 return null;
34 }


Wenn keine Exception geworfen wird läuft das ganze durch und die onPostExecute-Methode wird aufgerufen. Eben so wie es sein sollte :-) .

Sobald ich aber eine Exception bekomme (hier codezeile: 15) und das "return null" (habe auch anstatt null eine leere ArrayListe etc getestet) aufrufe,
beendet er die Methode nicht sondern springt auf Zeile 33 und return dort null.

Wenn ich das ganze im debugger laufen lasse, sehe ich das er über das "return null" aus zeile 17 drüber läuft und schließlich wieder auf das return null in Zeile 33 springt. Anschließend geht der Debugger durch die AsyncTask.class durch und bleibt irgendwann, aus mir (noch) nicht ganz ersichtlichen Gründen im ThreadPoolExecutor hängen.


Woran liegt das?
Ich habe schon eine andere App geschrieben wo ich ebenfalls einen switch-case benutze und da geht es einwandfrei.

Danke für eure Hilfe! :-)

Grüße

— geändert am 12.01.2012, 15:18:09

Antworten