Ich habe eine TextureView basierend auf Romain Guy Beispiel, das here gefunden werden kann. Bei Android 4.3 und 4.4 stürzt die Anwendung nach einigen Pausen und dem Fortsetzen der Anwendung ab, und die einzige Spur eines Fehlers ist ein fatales Signal 11 in LogCat. Ich habe eine Testanwendung erstellt, die den genauen Code von Romain Guy verwendet, um zu sehen, ob es etwas war, was ich in meinem Code gemacht habe, und auch der Code von Romain stürzt mit dem fatalen Signal 11 ab.TextureView wirft fatales Signal 11 nach dem Fortsetzen der Anwendung
Ich habe festgestellt, dass, wenn ich den Code mit einem Handler anstelle eines Threads ausführen, scheint es nicht zum Absturz der Anwendung. Der Handler sollte auf dem Hauptthread der Benutzeroberfläche ausgeführt werden (zumindest glaube ich es), was vielleicht darauf hindeutet, dass es sich um ein Threading-Problem handelt.
Ich habe auch festgestellt, dass der Absturz während eines Aufrufs von canvas.drawX (DrawColor, DrawBitmap, DrawRect, etc ...) auftritt. Das Sperren und Entsperren der Arbeitsfläche scheint kein Problem zu sein. Ich vermute, dass der Thread abgebrochen wird, während anderer Code immer noch den Canvas verwendet, aber ich habe eine sehr schwierige Zeit, das Problem zu verfolgen, da keine echten Ausnahmen ausgelöst werden und der Absturz ziemlich inkonsistent ist.
Alle Einsichten würden sehr geschätzt werden.
Stoppen und Verhindern der Ziehaufrufe bei onPause tatsächlich für mich gearbeitet! eine gute temporäre Lösung für diesen seltsamen Bug. Hoffentlich werden sie es bald beheben. – doomsdaymachine
Kannst du nicht 'Thread.join()' den Renderer-Thread in 'onPause()'? Das sollte sicherstellen, dass es nicht mehr ausgeführt wird, bevor TextureView mit der Bereinigung beginnt. 'interrupt()' ist nicht synchron; es setzt nur eine Flagge und kickt den anderen Thread aus 'wait()'. Wenn der Renderer-Thread weiterhin ausgeführt wird, nachdem 'onPause()' zurückgegeben wurde, ist das ein App-Fehler, kein Framework-Problem. – fadden