Ho un IntentService che sto tentando di avviare. Quando lo faccio, sputa fuori questo:Eccezione puntatore Null avvio IntentService
java.lang.RuntimeException: Unable to start service [email protected] 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
Googled questo e guardato come molte domande StackOverflow simili come sono riuscito a trovare. Tuttavia, ci sono un paio di sottili differenze che non riesco a comprendere. Prima di tutto, non c'è nessuna delle mie classi referenziate nell'eccezione. In secondo luogo, domande simili sono state risolte modificando il contesto o il doppio controllo per assicurarsi che non sia nullo.
Ho codice per controllare che non è il caso:
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)
}
});
}
mio IntentService è modellato dopo i documenti di Google. Semplicemente un costruttore con un metodo onHandleIntent.
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...
}
Quindi la mia domanda è questa: Dove si trova questa eccezione proviene e c'è qualcosa che posso fare di diverso per evitarlo? Il mio google-fu non mi ha deluso in passato, quindi spero che questa non sia una di quelle risposte dolorosamente ovvie. Inoltre, se ci sono cose che possono essere fatte meglio o semplicemente brutte, le critiche costruttive sono sempre apprezzate.
Ho inserito l'eccezione completa, NewsActivity e NewsService su pastebin nel caso in cui avessi lasciato qualcosa. http://pastebin.com/mR9Sykrq
Di solito, se si dimentica questo, ad esempio, un'attività, verrà ricordato quando si blocca, ma apparentemente non qui. –
@Jarett Solo un esempio delle molte meraviglie di Android =] –
Grazie, e funziona per me. – mxi1