2015-10-14 2 views
16

Eine meiner Apps im App Store funktioniert einwandfrei mit Android 5.0, aber seit heute habe ich mein Gerät auf 6.0 aktualisiert habe ich seltsame Fehler bekommen. Ich habe es auf die Fragment-Transition-Animationen beschränkt.Android 6.0 Marshmallow: Seltsamer Fehler mit Fragmentanimation

ftrans.setCustomAnimations(inAnim, outAnim, inAnim, outAnim); 

Ohne diese Linie, meine App funktioniert auch auf 6.0, damit bekomme ich diesen Fehler:

10-14 14:36:51.016 23750-23820/? A/libc: Fatal signal 7 (SIGBUS), code 1, fault addr 0xb1 in tid 23820 (hwuiTask1) 
10-14 14:36:51.118 200-200/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** 
10-14 14:36:51.118 200-200/? A/DEBUG: Build fingerprint: 'google/hammerhead/hammerhead:6.0/MRA58K/2256973:user/release-keys' 
10-14 14:36:51.118 200-200/? A/DEBUG: Revision: '0' 
10-14 14:36:51.118 200-200/? A/DEBUG: ABI: 'arm' 
10-14 14:36:51.118 200-200/? A/DEBUG: pid: 23750, tid: 23820, name: hwuiTask1 >>> com.xxx.xxx <<< 
10-14 14:36:51.118 200-200/? A/DEBUG: signal 7 (SIGBUS), code 1 (BUS_ADRALN), fault addr 0xb1 
10-14 14:36:51.110 200-200/? W/debuggerd: type=1400 audit(0.0:54): avc: denied { search } for name="com.xxx.xxx" dev="mmcblk0p28" ino=1499496 scontext=u:r:debuggerd:s0 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0 
10-14 14:36:51.136 200-200/? A/DEBUG:  r0 00000073 r1 96efeed8 r2 00000002 r3 00000005 
10-14 14:36:51.136 200-200/? A/DEBUG:  r4 00000006 r5 00000073 r6 00000000 r7 96eff1e8 
10-14 14:36:51.136 200-200/? A/DEBUG:  r8 00000005 r9 96efebd8 sl 96eff470 fp 00000016 
10-14 14:36:51.136 200-200/? A/DEBUG:  ip 000000b1 sp 96efebd8 lr 00000006 pc b5d887d2 cpsr 300f0030 
10-14 14:36:51.142 200-200/? A/DEBUG:  #00 pc 0005a7d2 /system/lib/libhwui.so 
10-14 14:36:51.142 200-200/? A/DEBUG:  #01 pc 0005b8a3 /system/lib/libhwui.so 
10-14 14:36:51.142 200-200/? A/DEBUG:  #02 pc 00055e0b /system/lib/libhwui.so 
10-14 14:36:51.142 200-200/? A/DEBUG:  #03 pc 0005c9fd /system/lib/libhwui.so 
10-14 14:36:51.142 200-200/? A/DEBUG:  #04 pc 0001fd93 /system/lib/libhwui.so 
10-14 14:36:51.142 200-200/? A/DEBUG:  #05 pc 0001006d /system/lib/libutils.so (android::Thread::_threadLoop(void*)+112) 
10-14 14:36:51.142 200-200/? A/DEBUG:  #06 pc 0005ecd3 /system/lib/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+70) 
10-14 14:36:51.142 200-200/? A/DEBUG:  #07 pc 0003f3e7 /system/lib/libc.so (__pthread_start(void*)+30) 
10-14 14:36:51.142 200-200/? A/DEBUG:  #08 pc 00019b43 /system/lib/libc.so (__start_thread+6) 
10-14 14:36:51.500 200-200/? W/debuggerd: type=1400 audit(0.0:55): avc: denied { read } for name="kgsl-3d0" dev="tmpfs" ino=5756 scontext=u:r:debuggerd:s0 tcontext=u:object_r:gpu_device:s0 tclass=chr_file permissive=0 
10-14 14:36:52.189 799-25288/? W/ActivityManager: Force finishing activity com.xxx.xxx/.MainActivity 
10-14 14:36:52.190 200-200/? E/DEBUG: AM write failed: Broken pipe 
10-14 14:36:52.190 799-815/? I/BootReceiver: Copying /data/tombstones/tombstone_01 to DropBox (SYSTEM_TOMBSTONE) 
10-14 14:36:52.257 799-901/? I/OpenGLRenderer: Initialized EGL, version 1.4 
10-14 14:36:52.286 799-4576/? D/GraphicsStats: Buffer count: 5 
10-14 14:36:52.286 799-4576/? I/WindowState: WIN DEATH: Window{d660a8a u0 com.xxx.xxx/com.xxx.xxx.MainActivity} 
10-14 14:36:52.321 799-808/? I/art: Background partial concurrent mark sweep GC freed 71211(4MB) AllocSpace objects, 18(1032KB) LOS objects, 33% free, 32MB/48MB, paused 3.554ms total 114.532ms 
10-14 14:36:52.372 214-214/? I/Zygote: Process 23750 exited due to signal (7) 
10-14 14:36:52.379 799-1413/? I/ActivityManager: Process com.xxx.xxx (pid 23750) has died 
10-14 14:36:52.386 799-1418/? I/ActivityManager: Killing 23069:com.android.documentsui/u0a35 (adj 15): empty #17 
10-14 14:36:52.864 799-817/? W/WindowAnimator: Failed to dispatch window animation state change. 
10-14 14:36:52.864 799-817/? W/WindowAnimator: android.os.DeadObjectException 
10-14 14:36:52.864 799-817/? W/WindowAnimator:  at android.os.BinderProxy.transactNative(Native Method) 
10-14 14:36:52.864 799-817/? W/WindowAnimator:  at android.os.BinderProxy.transact(Binder.java:503) 
10-14 14:36:52.864 799-817/? W/WindowAnimator:  at android.view.IWindow$Stub$Proxy.onAnimationStopped(IWindow.java:534) 
10-14 14:36:52.864 799-817/? W/WindowAnimator:  at com.android.server.wm.WindowAnimator.updateWindowsLocked(WindowAnimator.java:286) 
10-14 14:36:52.864 799-817/? W/WindowAnimator:  at com.android.server.wm.WindowAnimator.animateLocked(WindowAnimator.java:678) 
10-14 14:36:52.864 799-817/? W/WindowAnimator:  at com.android.server.wm.WindowAnimator.-wrap0(WindowAnimator.java) 
10-14 14:36:52.864 799-817/? W/WindowAnimator:  at com.android.server.wm.WindowAnimator$1.doFrame(WindowAnimator.java:123) 
10-14 14:36:52.864 799-817/? W/WindowAnimator:  at android.view.Choreographer$CallbackRecord.run(Choreographer.java:856) 
10-14 14:36:52.864 799-817/? W/WindowAnimator:  at android.view.Choreographer.doCallbacks(Choreographer.java:670) 
10-14 14:36:52.864 799-817/? W/WindowAnimator:  at android.view.Choreographer.doFrame(Choreographer.java:603) 
10-14 14:36:52.864 799-817/? W/WindowAnimator:  at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844) 
10-14 14:36:52.864 799-817/? W/WindowAnimator:  at android.os.Handler.handleCallback(Handler.java:739) 
10-14 14:36:52.864 799-817/? W/WindowAnimator:  at android.os.Handler.dispatchMessage(Handler.java:95) 
10-14 14:36:52.864 799-817/? W/WindowAnimator:  at android.os.Looper.loop(Looper.java:148) 
10-14 14:36:52.864 799-817/? W/WindowAnimator:  at android.os.HandlerThread.run(HandlerThread.java:61) 
10-14 14:36:52.864 799-817/? W/WindowAnimator:  at com.android.server.ServiceThread.run(ServiceThread.java:46) 
10-14 14:36:52.983 1889-2087/? W/OpenGLRenderer: Incorrectly called buildLayer on View: ShortcutAndWidgetContainer, destroying layer... 
10-14 14:36:52.983 1889-2087/? W/OpenGLRenderer: Incorrectly called buildLayer on View: ShortcutAndWidgetContainer, destroying layer... 

Das "in" Animation I sieht wie folgt verwendet werden:

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
android:interpolator="@android:interpolator/accelerate_decelerate"> 

<alpha 
    android:fromAlpha="0" android:toAlpha="1" 
    android:startOffset="@integer/fadein_offset" 
    android:duration="@integer/fadein_duration"/> 

<scale 
    android:fromXScale="0%" android:toXScale="100%" android:fromYScale="0%" android:toYScale="100%" 
    android:pivotX="50%" 
    android:pivotY="50%" 
    android:startOffset="@integer/fadein_offset" 
    android:duration="@integer/fadein_duration"/> 

Die "out" -Animation sieht identisch aus, nur umgekehrt.

Also meine Frage ist, was bedeutet dieser Fehler und wie machen Sie Fragmentübergänge in Marshmallow?

Edit: meine AddFragment-Methode, wo ich setCustomAnimations() verwenden. Ich habe die SDK-Prüfung hinzugefügt, da ich Skalierungsanimationen verwende, die bei niedrigeren Android-Versionen problematisch sind. Beachten Sie jedoch, dass dieser Code auf Android < 6 funktioniert, läuft die Animation gut und tat dies für 3 Jahre.

private void addFragment(Fragment f, boolean addToBackstack, String tag) { 
    FragmentManager fman = getSupportFragmentManager(); 
    FragmentTransaction ftrans = fman.beginTransaction(); 

//  if(Build.VERSION.SDK_INT>= Build.VERSION_CODES.HONEYCOMB) { 
//    ftrans.setCustomAnimations(inAnim, outAnim, inAnim, outAnim); 
//  } 

    if(addToBackstack) ftrans.addToBackStack(tag); 
    ftrans.replace(R.id.content, f, tag); 
    ftrans.commit(); 
} 

Auf Knopfdruck in Fragmente 1, I auf die Aktivität über die Schnittstelle übertragen und dort rufe ich

@Override 
public void showFacts(DBCategory category) { 
    addFragment(FragFacts.Instance(category.id(), category.name()), true, FragFacts.TAG); 
} 

Edit 2: fand ich es heraus ist nicht Animation im Allgemeinen, es ist nur die Skala Animation Teil meines Übergangs, der es verursacht. Ich habe es rausgeholt, jetzt funktioniert es.

+0

Wann rufen Sie 'ftrans.setCustomAnimations (inAnim, outAnim, inAnim, outAnim)' auf? [Von Docs] (http://developer.android.com/reference/android/view/View.html#buildLayer()) Vielleicht ist die Ansicht nicht mehr an das Fenster angehängt? – AlbAtNf

+0

Ich habe die komplette Methode hinzugefügt, plus wie ich es nenne. Ich rufe es nur beim Tastendruck an.Wie gesagt, das alles funktioniert tadellos in Android <6.0 ... – ElDuderino

+0

Ich habe auch einige Probleme mit Android 6.0, mit Code, der vorher funktioniert. – AlbAtNf

Antwort

1

Dies ist ein Fehler auf Marshmallow, wenn wir Animation skalieren. Für den Moment haben wir einen Workaround durch Einstellung view.setLayerType(View.LAYER_TYPE_SOFTWARE)see documentation

+0

aber es ist nicht statisch –

-1

gefunden. Für mich war es eine NullPointer Ausnahme maskiert als dies wegen Proguard Verschleierung. Ohne Proguard laufen und hoffentlich sehen Sie die zugrunde liegende Ausnahme.

-1

Ich habe diese Ausnahme und das gleiche Problem Failed to dispatch window animation state change.android.os.DeadObjectException.

anscheinend geschah dies, weil ich vergessen habe, Aktivität in Manifest-Datei zu erwähnen. Ich konnte es durch Hinzufügen von Aktivität in AndroidManifest.xml Datei beheben.

hinzugefügt einfach mit Aktivitätsklasse Namen nach und löste das Problem

Beispiel:

<activity 
     android:name="packageName.ClassName" 
     android:configChanges="orientation|keyboardHidden|screenSize|screenLayout" 
     android:screenOrientation="portrait" 
     android:theme="@style/Theme.ActionBarSize_all_view"> 
    </activity> 
-1

In meinem Fall meine app nicht abstürzen hat aber der Übergang zwischen den Aktivitäten war Buggy auf> 6,0. Der Grund dafür war, dass für eine der Aktivitäten die Eigenschaft windowBackground von ihrem Stil auf @null gesetzt war. Ich habe es kommentiert und es wurde behoben.

<style name="CustomActionBarTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">  
    <item name="android:windowBackground">@null</item> 
</style>