Problem mit meinem Thread

  • 1 Antworten
  • Letztes Antwortdatum
Micka

Micka

Fortgeschrittenes Mitglied
1
Hallo liebe Community,

zunächst möchte ich mein Projekt mal vorstellen bevor ich genauer auf mein Problem eingehe. Ich möchte eine App entwickeln die über WLAN Daten von einem Arduino empfängt. Der Arduino liest Sensoren aus und sendet die eingelesenen Daten ans Smartphone. Das Smartphone soll die Daten nicht nur sammeln sondern auch auswerten und in einer CouchDB im WLAN speichern.

Soweit so gut. Die CouchDB habe ich bereits unter Kontrolle, alle Zugriffe hab ich in einem CouchDBManager implementiert, ausgeführt werden sie in einem Thread um keine NetworkOnMainThreadException zu produzieren.

Nun wollte ich zum testen wie ich ein Liniendiagramm zeichne einfach mal ein paar Temperaturwerte als Testwerte für ein Diagramm nutzen. Zum zeichnen des Diagramms habe ich mir die Androidplot api ausgesucht. Es folgen zwei Links, ein Link zur Api allgemein und ein Link zum Quickstart(eine Erklärung wie die api genutzt wird).

Androidplot.com | An Android API for creating charts and plots.
Quickstart | Androidplot.com

Das Beispiel aus der Erklärung habe ich zunächst kopiert und getestet, das lief alles. Dann habe ich es angepasst.

Ursprünglicher Quellcode(Zeile 28-30 des Quellcodes der Activity im Beispiel):
Code:
        // Create a couple arrays of y-values to plot: 
        Number[] series1Numbers = {1, 8, 5, 2, 7, 4}; 
        Number[] series2Numbers = {4, 6, 3, 8, 2, 10};
angepasster Quellcode:
Code:
// Create a couple arrays of y-values to plot:
        new Thread()
        {
            public void run()
            {
                anzahl = CouchDBManager.getDatabaseSize(DBNAME);
                System.out.println("Anzahl: " + anzahl);
                entries = CouchDBManager.getAllEntries(DBNAME);
                for(int i = 0; i< anzahl; i++)
                {
                    System.out.println("Eintrag " + i + ": " + entries[i]);
                }
            }
            
        }.start();
        
        Number[] series1Numbers = new Number[anzahl];
        for(int i = 0; i < anzahl; i++)
        {
            Number numObj = (Number)Integer.valueOf(entries[i]);
            series1Numbers[i] = numObj;
        }
        //Number[] series1Numbers = {1, 8, 5, 2, 7, 4};//Werte einer Kurve
        Number[] series2Numbers = {4, 6, 3, 8, 2, 10};//Werte einer zweiten Kurve
Kurze Erklärung:
Die Methode CouchDBManager.getDatabaseSize(DBNAME) liefert als Returnwert ein Integer mit der Anzahl der Dokumente in der Datenbank.

Die Methode CouchDBManager.getAllEntries(DBNAME) liefern als Returnwert ein Stringarray mit allen eingetragenen werten in den Dokumenten der Datenbank.

die Variablen entries und anzahl habe ich direkt zu Beginn der Klasse der Activity als static deklariert.

Code:
...
private static int anzahl;
private static String[] entries;
@Override
public void onCreate(Bundle savedInstanceState)
...
Nun zu meinem Problem, die Kurve wird mir nicht angezeigt und die System.out.println Zeilen innerhalb meines Threads haben auch keine Wirkung.

Im Logcat sind leider auch keine Exceptions oder ähnliches zu finden was auf einen Fehler hinweist. Lediglich die Meldungen bezüglich heap sind mir unbekannt.


03-14 08:58:36.215: I/WERT_AUSLESEN_WIFI(27196): onCreate()
03-14 08:58:39.450: I/WERT_AUSLESEN_WIFI(27196): diagrammLaden()
03-14 08:58:39.510: I/diagrammAnzeigen(27196): onCreate()
03-14 08:58:39.560: D/dalvikvm(27196): GC_FOR_ALLOC freed 110K, 2% free 8995K/9159K, paused 13ms
03-14 08:58:39.565: I/dalvikvm-heap(27196): Grow heap (frag case) to 9.452MB for 656896-byte allocation
03-14 08:58:39.585: D/dalvikvm(27196): GC_FOR_ALLOC freed 1K, 3% free 9635K/9863K, paused 10ms
03-14 08:58:39.605: I/CouchDBManager(27196): getDatabaseSize(String dbname)
03-14 08:58:39.630: D/dalvikvm(27196): GC_CONCURRENT freed 40K, 3% free 9655K/9863K, paused 1ms+2ms
03-14 08:58:39.640: D/dalvikvm(27196): GC_FOR_ALLOC freed 36K, 3% free 9619K/9863K, paused 10ms
03-14 08:58:39.645: I/dalvikvm-heap(27196): Grow heap (frag case) to 10.061MB for 656896-byte allocation
03-14 08:58:39.665: D/dalvikvm(27196): GC_CONCURRENT freed 0K, 3% free 10260K/10567K, paused 1ms+1ms
Im Anhang habe ich noch ein Screenshot der aufgebauten Activity angehangen.

Kann mir jemand helfen das zum laufen zu bringen?
Auch andere Möglichkeiten das Diagramm zu zeichnen sind gerne willkommen.

Schonmal danke im voraus
 

Anhänge

  • Screenshot_2013-03-14-09-00-38.png
    Screenshot_2013-03-14-09-00-38.png
    9,6 KB · Aufrufe: 209
Mittlerweile nutze ich statt androidplot die AChartEngine. Damit klappts auch gut. Nette Erklärungen gibts dazu bei Youtube.

Gesendet von meinem GT-I9100 mit der Android-Hilfe.de App
 
Zurück
Oben Unten