1. smileyep1, 05.05.2011 #1
    smileyep1

    smileyep1 Threadstarter Neuer Benutzer

    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 = (TextViewfindViewById(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 0eintraege.lengthi++) 
                        {
                                
    eintraege[i] = list.get(i);
                        }
                        
                        
                        
                        for (
    int i 0eintraege.lengthi++)
                        {
                            
    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: " );    
            }
            catch ( 
    IOException e 
            {
                
    msgBox.setText"IOException: " );
            }
       
        }
     
  2. Thyrion, 05.05.2011 #2
    Thyrion

    Thyrion Ehrenmitglied

    Bau dein content mal nicht mit String + String + String + ... zusammen, sondern über einen StringBuffer oder StringBuilder.
     
  3. smileyep1, 05.05.2011 #3
    smileyep1

    smileyep1 Threadstarter Neuer Benutzer

    Super danke für den Tipp :thumbsup: - der Emulator zeigt es nach ca 1-2 sek an.
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
[OFFEN] ClickListener in ViewPager (dynamischer Seitenaufruf) Android App Entwicklung 09.04.2017
[RÜCKMELDUNG FEHLT] Text und Bilder in View einbinden Android App Entwicklung 26.03.2017
Unschönes XML parsen Android App Entwicklung 30.11.2016
Du betrachtest das Thema "HTML parsen geschwindigkeitsprobleme" im Forum "Android App Entwicklung",