Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Android 6.0 Marshmallow: error extraño con la animación de fragmentos

Una de mis aplicaciones en la tienda de aplicaciones funciona perfectamente bien con Android 5.0, pero desde hoy tengo mi dispositivo actualizado a 6.0 Tengo errores extraños. Lo reduje a las animaciones de transición de fragmentos.

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

Sin esta línea, mi aplicación también funciona bien en 6.0, con él me sale este error:

  • Emulador no funciona en Android Studio
  •  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... 

    La animación "in" que utilizo se ve así:

     <?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"/> 

    La animación "out" parece idéntica, sólo invertida.

    Así que mi pregunta es, ¿qué significa este error y cómo se fragmentan las transiciones en el malvavisco?

    Edit: mi método addFragment, donde utilizo setCustomAnimations (). He añadido el cheque del SDK mientras uso animaciones de escala que son problemáticas en versiones inferiores de Android. Tenga en cuenta, sin embargo, que este código funciona en Android <6, la animación funciona bien y lo hizo durante 3 años.

     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(); } 

    Al presionar el botón en el fragmento 1, delego a la actividad a través de la interfaz y allí llamo

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

    Editar 2: descubrí que no es animación en general, es sólo la parte de animación de escala de mi transición lo que lo causa. Lo saqué, ahora funciona.

  • Colocar la vista dentro de FrameLayout en Android
  • Cómo agregar una vista a la parte superior de un diseño lineal en el código?
  • Android - ¿Cómo posicionar la vista fuera de la pantalla?
  • ¿Cómo crear EditText con el botón de la cruz (x) en el extremo de él?
  • TabLayout estilo de pestaña
  • Nueva interfaz de la tarjeta Google Now y Google+
  • 4 Solutions collect form web for “Android 6.0 Marshmallow: error extraño con la animación de fragmentos”

    Esto es un error en Marshmallow cuando hacemos escala de animación. Por ahora encontramos una solución al establecer view.setLayerType(View.LAYER_TYPE_SOFTWARE) ver documentación

    Para mí fue una excepción NullPointer enmascarado como esto debido a Ofuscación Proguard. Ejecutar sin Proguard y esperamos ver la excepción subyacente.

    Tengo esta excepción y el mismo problema Failed to dispatch window animation state change.android.os.DeadObjectException .

    al parecer esto sucedió porque me olvidé de mencionar la actividad en el archivo de manifiesto. Fui capaz de solucionarlo mediante la adición de actividad en el archivo AndroidManifest.xml .

    simplemente agregó el siguiente con el nombre de la clase de actividad y resolvió el problema

    ejemplo:

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

    En mi caso, mi aplicación no se bloqueó, pero la transición entre las actividades fue buggy en> 6.0. La razón fue que una de las actividades tenía la propiedad windowBackground de su estilo establecido en @null. Lo comenté y se arregló.

     <style name="CustomActionBarTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar"> <item name="android:windowBackground">@null</item> </style> 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.