12

Niedawno zakodowanej Widget Android i testowałem go na emulatorze, jak również mojego Galaxy S, to działało dobrze na obu, po tym jak pisał to samo z Android Market teraz jestem coraz niektórych raporty o błędach.Nie można uruchomić usługi [nazwa usługi] NULL

jestem stwierdzając usługi na onUpdate widgetu klasy jak ten:

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

błąd, który niektórzy ludzie są coraz to:

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 

błąd stwierdza się NullPointerException on line 18 ServiceClass, czyli:

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

Linia 18 to String command = intent.getAction();

co może być powodem intencji pod rygorem pomóż

Odpowiedz

27

Według dokumentacji onStart() (właściwie onStartCommand() ale parametry są takie same):

intencją zamiarem dostarczany do startService (Intent), jak podano. Może to być wartość null, jeśli usługa jest w stanie ponownie uruchomiona po zakończeniu procesu , a poprzednio zwrócono wszystko z wyjątkiem START_STICKY_COMPATIBILITY.

+2

Dzięki, że wydaje się być to, myślę, że jego aplikacje zabójca zadanie, które ludzie używają może być zabijaniu usługę – Parvesh

+3

tak jak radzić sobie, gdy usługa jest restart? to zawsze błąd – yozawiratama

+0

Czy istnieje sposób, aby tego uniknąć. W mojej aplikacji pojawiają się te same problemy z Google Analytics. –

4

Cześć, aby dodać do tego, więc obejście jest po prostu dodać, jeśli (intent! = Null) przed getAction()? Jeśli to zrobię, czy usługa uruchomi się poprawnie później na własną rękę? Znaczenie OS faktycznie pomaga mi uruchomić usługę prawidłowo w przypadku zerowej intencji. Obawiam się, że skończy się sytuacja, w której usługa wcale się nie uruchamia.

+0

Tak powinno być w porządku, jeśli umieścić zerowej czek na zamiarem – Parvesh

+0

sprawdzając dla wartości zerowej wtedy, to nie rzuci żadnego wyjątku w tej kontroli .. –

Powiązane problemy