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.
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
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
Ich habe auch einige Probleme mit Android 6.0, mit Code, der vorher funktioniert. – AlbAtNf