Hm, Du lädst 100.000 Objekte aus der Datenbank und der Show-Stopper ist das Zeichnen auf dem Canvas. Mit anderen Worten, das Laden eines Objekts ist schneller, als das Zeichnen, würde ich so nicht erwarten. Ist das Zeichnen der Objekte so komplex?
Nur mal so für mein Verständnis für die Problematik:
- Erster Versuch
Du hast in einem Thread die Datensätze geladen und sofort gezeichnet, da war dann das Laden die Bremse
- Zweiter Versuch
Du lädst die Datensätze in mehreren Threads in denen du auch zeichnest, deswegen muss der Canvas gesperrt werden. Jetzt ist das Zeichnen die Bremse.
Gedanken die nicht aus der Erfahrung geboren sind
- Die Lade-Threads zeichnen nicht
Sondern sie über geben die zu zeichnenden Objekte einem Zeichnen-Thread (von dem es nur einen gibt). Der Canvas muss nicht mehr gesperrt werden, aber die Übergabe an den Zeichen-Thread muss natürlich Threadsave gestaltet werde.
- Du teilst deinen Canvas in Kacheln auf
Jede Kachel hat dann einen eignen Canvas und einen eignen Lade-Thread. Funktioniert nur, wenn Du die Objekte aus der entsprechend sortiert aus der Datenbank abrufen kannst.
- Jeder Lade-Thread hat einen Speicher-Canvas
Es wird dann während des Ladens nur im Speicher gezeichnet und zum Schluss alle Canvas gemerged und auf dem Display ausgegeben.