1.自己在寫代碼中啟動(dòng)Service的錯(cuò)誤以及equals使用的不當(dāng)
代碼是
Intent mIntentService = new Intent(MainActivity.this, Service.class);
mIntentService.putExtra(Service.INTENT_KEY_STATUS,extra);
startService(mIntentService);
Service 接受那
public int onStartCommand(Intent intent, int flags, int startId) {
if (intent.getStringExtra(INTENT_KEY_STATUS).equals(Config.EXTRA_ALL)) {
// 邏輯操作
}
return START_STICKY;
}
結(jié)果揍诽,在友盟錯(cuò)誤收集中,發(fā)現(xiàn)有空指針。
然后網(wǎng)上查找了一下什湘,明確的問(wèn)題所在
START_STICKY(常量1) STICKY粘性 當(dāng)應(yīng)用程序執(zhí)行完onStartCommand()方法后 service被異常kill
系統(tǒng)會(huì)自動(dòng)重啟服務(wù) 但是在重啟服務(wù)時(shí)傳入的intent為null 車禍蘇醒失憶
START_NOT_STICKY(常量2) 非粘性 當(dāng)應(yīng)用程序執(zhí)行完onStartCommand()方法后 service被異常kill
系統(tǒng)不會(huì)自動(dòng)重啟服務(wù) 車禍死亡
START_REDELIVER_INTENT(常量3) 當(dāng)應(yīng)用程序執(zhí)行完onStartCommand()方法后 service被異常kill
系統(tǒng)會(huì)自動(dòng)的重啟服務(wù)并且將Intent重新傳入 車禍蘇醒正常
然后,在加上equals使用不當(dāng)晦攒,應(yīng)改成
if (Config.EXTRA_GATHER_ALL.equals(intent.getStringExtra(INTENT_KEY_STATUS))) {
// 邏輯操作
}
這樣就可以了闽撤。