12

recientemente codifiqué un widget de Android y lo probé en Emulator, así como en mi Galaxy S, funcionó bien en ambos, después de publicarlo en el mercado de Android ahora recibo algunos informes de erroresNo se pudo iniciar el servicio [nombre del servicio] con nulo

estoy afirmando un servicio en el onUpdate de Widget clase como esta:

if (appWidgetIds != null) { 
    final int N = appWidgetIds.length; 

    // Perform this loop procedure for each App Widget that belongs to 
    // this 
    // provider 
    for (int i = 0; i < N; i++) { 
     // Start Service for each instance 
     int appWidgetId = appWidgetIds[i]; 
     Intent active = new Intent(context, DialerService.class); 
     active.setAction("Start"); 
     active.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, 
       appWidgetId); 

     context.startService(active); 
    } 
} 

el error que algunas personas están recibiendo es: afirma

java.lang.RuntimeException: Unable to start service [email protected] with null: java.lang.NullPointerException 
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3282) 
at android.app.ActivityThread.access$3600(ActivityThread.java:135) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2211) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:144) 
at android.app.ActivityThread.main(ActivityThread.java:4937) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:521) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.NullPointerException 
**at dialer.impact.DialerService.onStart(DialerService.java:18)** 
at android.app.Service.onStartCommand(Service.java:420) 
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3267) 
... 10 more 

error de un NullPointerException en la línea 18 de la ServiceClass que es este:

@Override 
public void onStart(Intent intent, int startId) { 
    //Line 18th 
      String command = intent.getAction(); 
    int appWidgetId = intent.getExtras().getInt(
      AppWidgetManager.EXTRA_APPWIDGET_ID); 
    RemoteViews remoteView = new RemoteViews(getApplicationContext() 
      .getPackageName(), R.layout.main); 
    AppWidgetManager appWidgetManager = AppWidgetManager 
      .getInstance(getApplicationContext()); 
} 

Línea 18 es la String command = intent.getAction();

lo que podría ser la razón de la intención de ser nula favor ayuda

Respuesta

27

De acuerdo con la documentación para onStart() (en realidad onStartCommand() pero los parámetros son los mismos):

intención La Intención suministra para iniciarServicio (Intento), como dado. Esto puede ser nulo si el servicio está siendo reiniciado después de que su proceso haya pasado de distancia, y anteriormente había devuelto cualquier cosa excepto START_STICKY_COMPATIBILIDAD.

+2

Gracias, eso parece ser, creo que las aplicaciones Task Killer que las personas usan podrían estar matando el servicio – Parvesh

+3

, así que ¿cómo manejarlo cuando se reinicie el servicio? siempre comete el error – yozawiratama

+0

¿Hay alguna manera de evitar esto? Estoy obteniendo los mismos problemas con Google Analytics en mi aplicación. –

4

Hola solo para agregar a esto, por lo que la solución es solo agregar un if (intento! = Nulo) antes de la getAction()? Si hago esto, ¿el servicio se iniciará correctamente más adelante? Lo que significa que el sistema operativo en realidad me ayuda a comenzar el servicio correctamente en el caso de un intento nulo. Tengo miedo de terminar en una situación donde el servicio no se inicia en absoluto.

+0

Sí, debería estar bien si pone un cheque nulo para la intención – Parvesh

+0

si comprueba el valor nulo entonces, no arrojará ninguna excepción en ese cheque. –

Cuestiones relacionadas