我在调用NullPointerException
服务方法时收到onDestroy()
的报告。我不理解的部分是我总是使用Context.startService()
启动服务,因此应始终调用onStartCommand()
并且引用永远不应为null。
值得一提的是,当我通过NullPointerException
调用关闭服务时,Context.stopService()
不会发生。
所以我的结论是框架在没有调用onDestroy()
的情况下调用onStartCommand()
。我猜测服务可能正在被销毁,并且由框架重新启动,因此onStartCommand()
实际上并未执行。但同样,这只是猜测。
关于这里可能会发生什么的任何想法?谢谢!
以下是相关代码:
public class ServiceLocationListener extends Service
private NotificationManager mNotificationManager;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
super.onStartCommand(intent, flags, startId);
mNotificationManager = getService(this, Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(SOME_NOTIFICATION_ID, someNotification);
...
return START_STICKY;
}
@Override
public void onDestroy() {
mNotificationManager.cancel(SOME_NOTIFICATION_ID); <<<<<<<<< NPE
...
}
}
答案 0 :(得分:0)
把mNotificationManager = getService(this,Context.NOTIFICATION_SERVICE);在onCreat()服务。