Parse.com runtime crash – android

Estoy recibiendo una gran cantidad de informes de los usuarios acerca de mi aplicación se estrelló. El error constante parece estar asociado con mi inicialización parse.com, sin embargo, lo he configurado como se describe en el tutorial de análisis.

Aquí está el rastro de la pila:

java.lang.RuntimeException: Unable to start receiver com.parse.ParseBroadcastReceiver: java.lang.RuntimeException: applicationContext is null. You must call Parse.initialize(context, applicationId, clientKey) before using the Parse library. at android.app.ActivityThread.handleReceiver(ActivityThread.java:2580) at android.app.ActivityThread.access$1700(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1397) at android.os.Handler.dispatchMessage(Handler.java:110) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:5292) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.RuntimeException: applicationContext is null. You must call Parse.initialize(context, applicationId, clientKey) before using the Parse library. at com.parse.Parse.checkContext(Parse.java:606) at com.parse.Parse.getApplicationContext(Parse.java:214) at com.parse.ManifestInfo.getContext(ManifestInfo.java:322) at com.parse.ManifestInfo.getPackageManager(ManifestInfo.java:330) at com.parse.ManifestInfo.getPackageInfo(ManifestInfo.java:356) at com.parse.ManifestInfo.deviceSupportsGcm(ManifestInfo.java:441) at com.parse.ManifestInfo.getPushType(ManifestInfo.java:210) at com.parse.PushService.startServiceIfRequired(PushService.java:168) at com.parse.ParseBroadcastReceiver.onReceive(ParseBroadcastReceiver.java:19) at android.app.ActivityThread.handleReceiver(ActivityThread.java:2573) ... 10 more 

Y aquí está mi código de inicialización:

 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_home_screen); Parse.initialize(this, "hGG5RdgNVdI7eCeZynV32lWYXywQRHkpp5zLdY7Q", "TwmNbpBYEt4u3euE3lzNIgwyroSl8RPGF2dJFsPv"); ParseInstallation.getCurrentInstallation().saveInBackground(); 

¿Puede alguien ver lo que está causando este error, y cómo solucionarlo?

Abajo está mi código del receptor:

 public static class Receiver extends ParsePushBroadcastReceiver { private String notificationText; private Boolean notificationreceived = false; public Receiver(){ } private static final String TAG = "MyNotificationsReceiver"; @Override public void onPushOpen(Context context, Intent intent) { Log.e("Push", "Clicked"); Intent i = new Intent(context, HomeScreen.class); notificationreceived = true; i.putExtra("alert",notificationText); i.putExtra("alertreceived", notificationreceived); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(i); Scb998.scb988b=true; try { JSONObject json = new JSONObject(intent.getExtras().getString("com.parse.Data")); Scb998.msg = json.getString("alert"); } catch (JSONException e) { Log.d(TAG, "JSONException: " + e.getMessage()); } } } 

Mover la inicialización de Parse a su clase de App (extendida desde la Application )

 public class App extends Application { @Override public void onCreate() { super.onCreate(); Parse.initialize(this, "hGG5RdgNVdI7eCeZynV32lWYXywQRHkpp5zLdY7Q", "TwmNbpBYEt4u3euE3lzNIgwyroSl8RPGF2dJFsPv"); ParseInstallation.getCurrentInstallation().saveInBackground(); } } 

Y, por supuesto, refiérase a su AndroidManifest.xml

 <application android:name=".app.App" .... </application> 

La razón del accidente es la siguiente. Cuando su aplicación está en segundo plano, puede ser destruida por el sistema. De la guía de Google

Un proceso que contiene una actividad que no está visible para el usuario (se ha llamado el método onStop () de la actividad). Estos procesos no tienen un impacto directo en la experiencia del usuario, y el sistema puede matarlos en cualquier momento para recuperar la memoria de un proceso de primer plano, visible o de servicio. Por lo general, hay muchos procesos de fondo en ejecución, por lo que se mantienen en una lista LRU (menos utilizado recientemente) para asegurarse de que el proceso con la actividad que fue vista más recientemente por el usuario es el último a ser matado. Si una actividad implementa correctamente sus métodos de ciclo de vida y guarda su estado actual, eliminar su proceso no tendrá un efecto visible en la experiencia del usuario, ya que cuando el usuario vuelve a la actividad, la actividad restaura todo su estado visible. Consulte el documento de actividades para obtener información sobre cómo guardar y restaurar el estado.

Cuando la aplicación recibe una notificación push, no se inicializará el análisis porque lo inicializará en el método onCreate actividad, que no se llamará.

  • Error en el registro de gcm en android
  • Cordova Push Plugin: onNotificationGMC no se activa y no se puede obtener regID
  • GCM cómo anular el registro de un dispositivo con GCM y servidor de terceros
  • Número máximo de temas en Google Cloud Messaging
  • Android Push Notificación del dispositivo a otros dispositivos
  • No se resuelve la integración de GCM y gcm_defaultSenderId
  • Notificaciones push iOS y código nativo cliente-cliente de Android
  • GCM devuelve un tipo de mensaje nulo
  • En la notificación push mostrar una actividad / popup, en lugar del mensaje en la barra de estado
  • ¿Es posible usar GCM para enviar notificaciones push entre diferentes aplicaciones?
  • ¿Cómo abrir una nueva actividad al hacer clic en la notificación push?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.