Mac Systems
- Forum-Beiträge: 1.727
01.10.2009, 16:02:09 via Website
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):
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 ?
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();
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
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.