Null Pointer Ausnahme starten IntentService

Ich habe einen IntentService, den ich anfange zu starten. Wenn ich das mache, spuckt es das aus:

java.lang.RuntimeException: Unable to start service com.pec.testapp.service.NewsService@406bd940 with Intent { cmp=com.pec.testapp/.service.NewsService }: java.lang.NullPointerException at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2173) ... (omitted for brevity) Caused by: java.lang.NullPointerException at android.app.IntentService.onStart(IntentService.java:110) at android.app.IntentService.onStartCommand(IntentService.java:118) at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2160) ... 10 more 

Ich habe das gegoogelt und sah so viele ähnliche StackOverflow Fragen wie ich finden konnte. Allerdings gibt es ein paar subtile Unterschiede, die ich nicht um meinen Kopf umwickeln kann. Zunächst einmal gibt es keine meiner Klassen, die in der Ausnahme referenziert werden. Zweitens wurden ähnliche Fragen durch die Änderung des Kontextes oder der doppelten Überprüfung behoben, um sicherzustellen, dass es nicht null ist.

Ich habe Code zu überprüfen, das ist nicht der Fall:

 public Context context; @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); context = getApplicationContext(); if(context == null) Log.d("PECAPP","Context is null"); setContentView(R.layout.news_layout); ...Omit button code... button.setOnClickListener(new OnClickListener(){ @Override public void onClick(View view){ Intent i = new Intent(context, NewsService.class); // also tried NewsActivity.this if( i != null) // I know that this should never happen but I'm at a loss... startService(i); // I've also tried this with context.startService(i) } }); } 

Mein IntentService ist nach dem Google Docs modelliert. Einfach ein Konstruktor mit einer onHandleIntent Methode.

 public NewsService() { super("NewsService"); } ...omit onCreate() and onDestroy() since they haven't been implemented yet... @Override protected void onHandleIntent(Intent intent) throws IllegalArgumentException { Log.d("PECAPP","Got here..."); // I never actually got here... if(intent == null) Log.d("PECAPP","INTENT IS NULL"); ...omit rest of code... } 

Also meine Frage ist: Woher kommt diese Ausnahme von und gibt es etwas, das ich anders machen kann, um es zu vermeiden? Meine google-fu hat mich in der Vergangenheit nicht versagt, so hoffentlich ist dies nicht eine dieser schmerzlich offensichtlichen Antworten. Auch wenn es Dinge gibt, die besser gemacht werden können oder einfach nur hässlich sind, wird konstruktive Kritik immer geschätzt.

Ich habe die ganze Auszeichnung, NewsActivity und NewsService auf Pastebin, falls ich etwas herausgelassen habe. Http://pastebin.com/mR9Sykrq

  • Wie man eine Nachricht vom Dienst an die Aktivität sendet
  • Android - bindService mehr als einmal
  • Wie wird der Whatsapp-Service neu gestartet, auch wenn ich die App-App erzwinge?
  • Wie man Service in Android ohne Aktivität anfängt
  • Java.lang.RuntimeException: Handler (android.os.Handler) Senden einer Nachricht an einen Handler auf einem toten Thread
  • DispatchKeyEvent von Service
  • Clear Aktuelle apps wischen die apps Speicher und mein Receiver hörte auf zu arbeiten
  • Erhalten des Benutzerverhaltens auf dem Android Phone (App History, Browse History usw.)
  • 2 Solutions collect form web for “Null Pointer Ausnahme starten IntentService”

    Wenn du in deinem IntentService onCreate() überschreiben onCreate() , dann super.onCreate() dir sicher, dass du super.onCreate() . Das scheint sehr wahrscheinlich dein Problem zu sein.

    Nicht sicher, ob es das gleiche Problem ist, aber ich war mit einem intentService auch, und ich hatte Probleme mit der Verwendung

     context = getApplicationContext(); 

    Oder context = getBaseContext (); Ich war nicht überbewertet auf Create so die vorherige Lösung kann die Lösung für Sie sein, ich arbeitete innen "onHandleIntent"

    Ich würde eine sofortige Ausnahme mit dem ersten bekommen, und eine Ausnahme später, als ich versuchte, die 2. zu verwenden.

    Ich habe erkannt, dass der Intentservice selbst eine Unterklasse von Kontext ist, also habe ich "dieses" ersetzt, wo immer ich eine Instanz von "Kontext" brauchte.

    Das hat mein Problem gelöst.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.