HTML parsen geschwindigkeitsprobleme

S

smileyep1

Neues Mitglied
0
Hi - ich hab ein Problem mit meinem Code und zwar ist er unfassbar langsam ;)

Habe das ganze erst in JAVA mit komandozeilenausgabe geschrieben und es dann später in ein Android Projekt eingebaut.

Es wird im grunde genommen nur die Seite eingelesen und ein bissle mit Regex gearbeitet um ein paar fetzen aus der Seite zu holen.
Funktioniert am PC auch wunderbar - doch sobald ich das ganze mit dem Android Emulator ausführe dauert es über 5 min bis ich meine Ausgabe auf dem Bildschirm habe.

Auf meinem Handy verabschiedet sich das Programm nach etlichen minuten per Fehlermeldung.

Hier mal der Code - wüsste gerne wie man die geschichte beschleunigen kann.

Die Ursache des ganzen liegt bei
PHP:
while(d.ready())
             {
                 content += d.readLine();
                 
             }

Hier der gesamte code

PHP:
public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        TextView msgBox = (TextView) findViewById(R.id.msgBox);
        msgBox.setText("Bereit zum Download");
        
        try
        {
            msgBox.setText("Shoutbox wird geladen");
            URL url_ = new URL("www.dieurldieichlesenwill.de");
             URLConnection conn = url_.openConnection();
             DataInputStream in = new DataInputStream ( conn.getInputStream ( ) ) ;
             BufferedReader d = new BufferedReader(new InputStreamReader(in, "utf-8"));
             String content = "";
             msgBox.setText("Inhalt wird eingelesen");
             
            
             while(d.ready())
             {
                 content += d.readLine();
                 
             }
             
                
                if (content == "" )
                {
                    
                    msgBox.setText("Seite konnte nicht runtergeladen werden");
                }
                else
                {
                    msgBox.setText("Shoutbox Inhalt wurde erfolgreich geladen\n");
                    Pattern p = Pattern.compile("<hr /><div style=\"width: 545px; overflow: hidden;\">(.*?)</div");
                    //Pattern p = Pattern.compile("(<hr /><div style=\"width: 545px; overflow: hidden;\">)(.+)(</div>)");   //.*?         - Irgend ein zeichen einmal oder mehr
                    Matcher m = p.matcher(content);
                
                    //String string_ausgabe = "";
                     //StringBuffer sb = new StringBuffer();
                    List<String> list = new ArrayList<String>();
                    
                     String [] eintraege;
                    
                    while (m.find())
                    {
                        
                        list.add(m.group(1));
                        
                        //Systemout.println( m.group(2));
                    }
                    eintraege = new String
[list.size()];
                    
                    for (int i = 0; i < eintraege.length; i++) 
                    {
                            eintraege[i] = list.get(i);
                    }
                    
                    
                    
                    for (int i = 0; i < eintraege.length; i++)
                    {
                        msgBox.append(eintraege[i]+"\n");
                        
                    }
                    
                    
                    //lv_eintraege = (ListView)findViewById(R.id.lv_eintraege);
                    //lv_eintraege.setAdapter(new ArrayAdapter<Object>(this,android.R.layout.simple_list_item_1, eintraege));
                
                    //System.out.println(string_ausgabe);
                    //System.out.println("Die Seite konnte eingelesen werden");
                }    
                
        }
        catch(PatternSyntaxException pse)
        {
            msgBox.setText("There is a problem with the regular expression!%n");
            
            System.exit(0);
        }
        catch ( MalformedURLException e ) 
        {
            msgBox.setText( "MalformedURLException: " + e );    
        }
        catch ( IOException e ) 
        {
            msgBox.setText( "IOException: " + e );
        }
   
    }
 
Bau dein content mal nicht mit String + String + String + ... zusammen, sondern über einen StringBuffer oder StringBuilder.
 
Super danke für den Tipp :thumbsup: - der Emulator zeigt es nach ca 1-2 sek an.
 

Ähnliche Themen

S
Antworten
9
Aufrufe
1.481
jogimuc
J
E
Antworten
5
Aufrufe
1.019
enrem
E
A
Antworten
10
Aufrufe
1.492
andymcnab
A
Zurück
Oben Unten