Por alguna razón, mi aplicación ya no llamará a las clases de aplicación personalizadas onCreate(). Ayer todo estuvo bien, pero hoy mi aplicación se bloquea cuando intenta abrir una conexión con Realm.

java.lang.IllegalStateException: Call 'Realm.init(Context)' before calling this method.

Como inicializo Realm en mis clases de aplicación personalizadas onCreate() intenté insertar un punto de interrupción y cerrar sesión en el método. Nada.

Esta pregunta tiene un problema similar

La clase de aplicación personalizada onCreate () nunca se llamó

Deshabilité la ejecución instantánea, limpié, reconstruí e incluso reinicié el estudio de Android, pero el problema persiste. Incluso intenté verificar un commit de hace tres días, lo que ciertamente funcionó, pero el resultado es el mismo.

Clase de aplicación personalizada

public class MyApplication extends Application
{
    @Override
    public void onCreate()
    {
        super.onCreate();
        JodaTimeAndroid.init(this);
        Realm.init(this);
        //more Realm initialization code
    }
}

Sección de solicitud del manifiesto

 <application
    android:name=".MyApplication"
    android:allowBackup="true"
    android:icon="@drawable/logo"
    android:label="@string/app_name"
    android:screenOrientation="portrait"
    android:supportsRtl="true"
    android:theme="@style/MyTheme">

¿Alguna idea de lo que podría causar esto y cómo solucionarlo?

EDITAR

Todo lo que logcat saca antes del choque

03-19 21:06:10.687 21869-21869/? E/Zygote: v2
03-19 21:06:10.687 21869-21869/? I/libpersona: KNOX_SDCARD checking this for 10323
03-19 21:06:10.687 21869-21869/? I/libpersona: KNOX_SDCARD not a persona
03-19 21:06:10.688 21869-21869/? E/Zygote: accessInfo : 0
03-19 21:06:10.688 21869-21869/? W/SELinux: SELinux selinux_android_compute_policy_index : Policy Index[2],  Con:u:r:zygote:s0 RAM:SEPF_SECMOBILE_7.0_0004, [-1 -1 -1 -1 0 1]
03-19 21:06:10.689 21869-21869/? I/SELinux: SELinux: seapp_context_lookup: seinfo=untrusted, level=s0:c512,c768, pkgname=hailer.com.hailer 
03-19 21:06:10.692 21869-21869/? I/art: Late-enabling -Xcheck:jni
03-19 21:06:10.709 21869-21869/? D/TimaKeyStoreProvider: TimaSignature is unavailable
03-19 21:06:10.709 21869-21869/? D/ActivityThread: Added TimaKeyStore provider
03-19 21:06:10.790 21869-21869/hailer.com.hailer D/ContextRelationMgrBrdg: loadKlass() : caller=com.samsung.android.bridge.multiscreen.common.ContextRelationManagerBridge.<clinit>:28 android.app.LoadedApk.makeApplication:833 
03-19 21:06:10.814 21869-21869/hailer.com.hailer W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
03-19 21:06:10.872 21869-21869/hailer.com.hailer D/AndroidRuntime: Shutting down VM
03-19 21:06:10.873 21869-21869/hailer.com.hailer E/AndroidRuntime: FATAL EXCEPTION: main
                                                                   Process: hailer.com.hailer, PID: 21869
                                                                   java.lang.RuntimeException: Unable to start activity ComponentInfo{hailer.com.hailer/hailer.com.hailer.activities.MainActivity}: java.lang.IllegalStateException: Call `Realm.init(Context)` before calling this method.
                                                                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2947)
                                                                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3008)
                                                                       at android.app.ActivityThread.-wrap14(ActivityThread.java)
                                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650)
                                                                       at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                       at android.os.Looper.loop(Looper.java:154)
                                                                       at android.app.ActivityThread.main(ActivityThread.java:6688)
                                                                       at java.lang.reflect.Method.invoke(Native Method)
                                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468)
                                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)
                                                                    Caused by: java.lang.IllegalStateException: Call `Realm.init(Context)` before calling this method.
                                                                       at io.realm.Realm.getDefaultInstance(Realm.java:208)
                                                                       at hailer.com.hailer.adapters.DiscussionAdapter.<init>(DiscussionAdapter.java:57)
                                                                       at hailer.com.hailer.fragments.ChatListFragment.onCreateView(ChatListFragment.java:60)
                                                                       at android.support.v4.app.Fragment.performCreateView(Fragment.java:2189)
                                                                       at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1299)
                                                                       at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528)
                                                                       at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1595)
                                                                       at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:757)
                                                                       at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2355)
                                                                       at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2146)
                                                                       at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2098)
                                                                       at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2008)
                                                                       at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:388)
                                                                       at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:607)
                                                                       at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:178)
                                                                       at hailer.com.hailer.activities.MainActivity.onStart(MainActivity.java:320)
                                                                       at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1256)
                                                                       at android.app.Activity.performStart(Activity.java:6929)
                                                                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2910)
                                                                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3008) 
                                                                       at android.app.ActivityThread.-wrap14(ActivityThread.java) 
                                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) 
                                                                       at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                       at android.os.Looper.loop(Looper.java:154) 
                                                                       at android.app.ActivityThread.main(ActivityThread.java:6688) 
                                                                       at java.lang.reflect.Method.invoke(Native Method) 
                                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468) 
                                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358) 

ACTUALIZACIÓN

Recorté las bibliotecas y deshabilité multidexing. No ha ayudado También revisé DiscussionAdapter y ChatListFragment y ambos están bien. Realm se usa de manera correcta y ha funcionado durante más de un año sin problemas. También tengo log.d("CUSTOMAPPCLS","onCreate called") en mi clase de aplicación personalizada que no se muestra en el registro. Tampoco se detiene un punto de interrupción en ninguna parte de la llamada onCreate().

Ahora tengo un nuevo error. Esta vez es de PrefsAccessor, un contenedor para SharedPreferences que también se inicializa en la llamada de las aplicaciones personalizadas onCreate. PrefAccessor.init(this); Ejecuté la compilación nuevamente pero recibí el error Realm ... El que estaba considerando PrefAccessor lanzó una ejecución de puntero nulo al intentar acceder a SharedPreferences. Esto apunta al hecho de que no se llama a la aplicación onCreate.

    public static string isUseEnterToSendEnabled()
    {
    SharedPreferences prefs = applicationContext.getSharedPreferences(PREFS_KEY, Context.MODE_PRIVATE);// <-- nullpointer exception: Trying to call .getSharedPreferences on a null object
    return prefs.getBoolean(ENTER_TO_SEND, false);
    }
1
Eloraju 19 mar. 2017 a las 22:50

2 respuestas

La mejor respuesta

ACTUALIZACIÓN 04/2017 El Samsung S7 comenzó a funcionar un par de días después de que publiqué esta respuesta ... Magia negra todo el tiempo que digo.


Parece que el Samsung S7 que suelo usar para las pruebas está de alguna manera roto. Tengo algunos otros teléfonos de la oficina y todos funcionan bien. Realmente no tengo idea de qué causó que el teléfono comenzara a fallar la aplicación ... Ninguna de las otras aplicaciones está fallando y no descargué ninguna actualización u otras aplicaciones antes de que esto comenzara. Publicaré un comentario a esta respuesta si descubro esto y acepto esto como la solución ya que encontré una "solución" ...

0
Eloraju 13 abr. 2017 a las 15:51

Encontré un escenario similar al tuyo aquí:

https://github.com/realm/realm-java/issues/1800

El problema parece ser tener muchas bibliotecas incluidas en su proyecto (como los Servicios de Google Play), lo que podría llevar a que su aplicación alcance el límite de los métodos de 65K.

¿Incluyó alguna dependencia nueva para su proyecto?

Actualizar:

Después de revisar su registro, creo que el problema puede estar aquí:

hailer.com.hailer.adapters.DiscussionAdapter. (DiscussionAdapter.java:57) en hailer.com.hailer.fragments.ChatListFragment.onCreateView (ChatListFragment.java:60)

Tal vez en su ChatListFragment , tenga una instancia de DiscussionAdapter que a su vez tiene un inicializador estático que invoca algo relacionado con Realm.

1
Mina Samy 19 mar. 2017 a las 20:14