gibt es eine Möglichkeit zum deaktivieren der hardware-Beschleunigung ist nur für android 4.0.3?
Habe ich vor kurzem stolperte über ein Problem mit android 4.0.3, wo Im immer folgende Exception sobald die Anwendung gestartet wird (auf anderen android-Versionen funktioniert es einwandfrei):
java.lang.NullPointerException
at android.view.GLES20RecordingCanvas.drawPatch(GLES20RecordingCanvas.java:97)
at android.graphics.NinePatch.draw(NinePatch.java:125)
at android.graphics.drawable.NinePatchDrawable.draw(NinePatchDrawable.java:189)
at android.widget.ImageView.onDraw(ImageView.java:892)
at android.view.View.draw(View.java:10978)
at android.view.ViewGroup.drawChild(ViewGroup.java:2887)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
at android.view.ViewGroup.drawChild(ViewGroup.java:2885)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489)
at android.view.View.getDisplayList(View.java:10415)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2597)
at android.view.View.getDisplayList(View.java:10380)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2597)
at android.view.View.getDisplayList(View.java:10380)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2597)
at android.view.View.getDisplayList(View.java:10380)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2597)
at android.view.View.getDisplayList(View.java:10380)
at android.view.HardwareRenderer$GlRenderer.draw(HardwareRenderer.java:842)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:1910)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1634)
at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)
Dies ist im Zusammenhang mit hardware-Beschleunigung aktiviert, sobald ich es deaktivieren auf das manifest beginnt die Anwendung funktioniert ganz gut.
Durch eine Suche fand ich eine melden (innen, doc suchen "drawPatch") auf einigen Gespräch von Romain Guy, wo er diskutieren ein wenig, was könnte die Ursache sein, obwohl es keinen workaround oder fix vorgeschlagen, ich Frage mich, ob ich sollte, deaktivieren Sie die hardware-Beschleunigung nur für diese version von android, oder wenn es einen workaround dafür?
Vielen Dank für Ihre Zeit.
InformationsquelleAutor der Frage Aldo Reyes | 2012-12-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Also A-C erwähnt dies in seinem Kommentar, aber lassen Sie mich aufwendige.
Können Sie erstellen, die einen boolean in einem Werte-Datei und kleben Sie es in der richtigen version-Ordner. In Ihrem manifest unter
Check out this post: https://plus.google.com/+AndroidDevelopers/posts/DcsFABkyuYM.
Sieht aus wie Ihre gehen zu wollen, um den Gegner values-v15/bools.xml
http://developer.android.com/reference/android/os/Build.VERSION_CODES.html#ICE_CREAM_SANDWICH_MR1
InformationsquelleAutor der Antwort sgarman
Man derzeit nicht deaktivieren Sie die hardware-Beschleunigung im Fenster Ebene von code.
Nur aktivieren. Ich schlage vor, Sie, um es zu Deaktivieren, die standardmäßig in Ihrem manifest:
und dann aktivieren Sie es, um alle anderen Versionen:
Können Sie deaktivieren Sie die hardware-Beschleunigung für eine einzelne Ansicht zur Laufzeit mit dem folgenden code:
Diese info ist erhältlich in Android - Steuerung-Hardware-Beschleunigung
InformationsquelleAutor der Antwort João Machete
Ich, wie die Antwort, verbunden durch @sgarman, weil es hat nur minimale Auswirkungen auf den code, und ist leicht zu warten. Nur zu, erweitern Sie auf diesen link, hier ist was ich getan habe, um deaktivieren Sie die hardware-Beschleunigung nur für Android-v4.0.3 und nur für eine bestimmte Tätigkeit und bei mir hat es geklappt (vergessen Sie nicht, fügen Sie den xml-Header die Angabe von version und encoding zu den verschiedenen bool.xml Dateien, die als wiki-editor würde nicht lassen Sie mich fügen Sie ihn in):
AndroidManifest.xml: identifizieren, die die Aktivität hosting der beanstandeten anzeigen, und fügen Sie diese zu, dass die Aktivität:
Datei-Pfad: res/values/bool.xml:
Datei-Pfad: res/values-v14/bool.xml:
Datei-Pfad: res/values-v16/bool.xml:
InformationsquelleAutor der Antwort Phileo99
Dies ist eine lustige Fehler Ursache hardware-Beschleunigung funktioniert (manchmal). Ich habe die Suche nach der Antwort auf diese für die letzten paar Tage. Es ist dokumentiert in ICS, aber ich habe bemerkt es in einer meiner test-Handys ein Samsung Galaxy S3 läuft 4.1.2 die Meisten Leute empfehlen, das ausschalten der hardware-Beschleunigung. Ich wollte nicht, dass die Ursache die hardware-Beschleunigung macht meine Animationen so seidig und glatt. Also, was ich fand, war, ob ich überschreiben draw() versuchen und fangen die null-Zeiger-Ausnahme der hardware-beschleunigten Funktionen von Arbeit (die meiste Zeit) und genug für Sie, um Sie niemals merken, dass Sie sich nicht die Arbeit oder das werfen der Ausnahme.
In meinem Fall habe ich an einem benutzerdefinierten Ansicht und hatte auch einige benutzerdefinierte Zeichnung zu tun. Der einfache check für null funktioniert nicht (canvas==null) das ist der Grund, warum dieser bug ist ein Schmerz. Also, was ich Tat, war dies:
dann schweigend versuchen und gefangen NPE auf die einzelnen draw-Anweisungen. Ersten mal sah ich diesen bug, den ich umgeben die gesamte draw () - code in einen try-und catch. Das hat für die meisten Handys, aber auf dem samsung s3 laufen 4.1.2 war es verursacht ein flackern. Also ich habe die oben genannten Methode und hat still try catch ist bei jedem Aufruf someObject.zeichnen(mCanvas) und das löste das problem vollständig zu entfernen alle flimmern (Unterschiede zwischen hardware-beschleunigte view-cache und die neue Leinwand). Hoffe, das hilft! Viel besser als die Dreh-HWA aus!
InformationsquelleAutor der Antwort Aaron Mathew Crayford