Looper und Toast

  • Antworten:4
Mac Systems
  • Forum-Beiträge: 1.727

01.10.2009, 16:02:09 via Website

Wie müsste Ich folgendes Szenario zu Testzwecken erweitern damit Ich den Toast sehen kann:

Ich habe einen XML Parser der meine Datenbank füllt, das dauert ca. 45 Sekunden für ca. 8100 Inserts.
Der User bekommt von mir momentan einen ProgressDialog zu sehen und ist verdammt zu warten da dies eine einmalige Angelegenheit ist.
Im Emulator habe Ich soweit keine Probleme damit, auf meinen G1 ist allerdings irgendwas im Busch. Nun wollte Ich einen Toast über dem ProgressDialog zeigen wenn das denn überhaupt geht (Mir ist hier unklar über Android ähnlich wie Swing über die Rootpane arbeitet um z.b PopupMenus einzublenden)

Daher hatte Ich folgende Idee (bedenkt das bei betreten der run Methode bereits der Progressdialog zu sehen ist):

1@Override
2 public final void run()
3 {
4 if (Log.isLoggable(LOG_TAG, Log.DEBUG))
5 {
6 Log.d(LOG_TAG, "Parsing Thread started.");
7 }
8 try
9 {
10 ....
11 .....
12
13 final SAXParserFactory factory = SAXParserFactory.newInstance();
14 final SAXParser parser = factory.newSAXParser();
15 inStream = new BufferedInputStream(IOUtils.getStationXML(SpotSelection.this));
16 parser.parse(inStream, new StationHandler());
17
18 Looper.prepare();
19 Toast.makeText(SpotSelection.this,"DB Insert Start", Toast.LENGTH_LONG).show();
20
21 final Database database = new Database(SpotSelection.this);
22 final DBSpotUpdate updater = new DBSpotUpdate(database);
23 updater.update();


So bekomme Ich zwar keinen Toast zu sehen aber mein Parser Thread wird nicht "abgewürgt" lasse Ich das Looper#prepare() weg springt er ohne Fehler aus dem Thread raus. Leider ist in keinem meiner beiden Android Bücher das Thema behandelt (sind allgemein sehr oberflächlich).



Wer weiß ob es geht und wenn Ja wie ?

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

01.10.2009, 18:23:58 via Website

Ich verstehe nicht ganz wieso oder wofür du noch einen Toast über die ProgressBar legen willst.

Du kannst doch schon in der Progress Bar einen informativen Text mitgeben ...

lg
Voss

lg Voss

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

01.10.2009, 18:28:20 via Website

Klar kann Ich das, allerdings sehe ich nicht welcher Programmteil gerade ausgeführt wird.
Angenommen mein Progress unterteilt sich in 3 Bereiche, dann hätte ich halt gerne die Möglichkeit es zu sehen um einen groben Eindruck zu bekommen was lange braucht. ProgressDialog lässt es nicht zu später den Text zu verändern einmal gesetzt, da gab es ebenfalls irgendwelche Looper Warnungen.

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

01.10.2009, 18:34:36 via Website

Mich würde auch mal, rein aus Performance Gründen interessieren, wie Du in Deinem Updater die inserts konkret abwickelst. Es gibt da vielleicht perfomantere Methoden ...

Ich denke da bspw. an prepared Statements ...

lg
Voss

lg Voss

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

01.10.2009, 18:37:59 via Website

Das tue Ich bereits, ist aber nicht das Thema dieses Threads ;)

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten