原因:因为你用了Bound Service 和 Start Service两种方法启动了Service。
如果只是Bound Service是没有问题的,因为绑定它的Activity销毁时,Service也就销毁了。
但是,当你用Start Service时,启动它的Activity销毁时,Service是不会跟着一起销毁的,而是一直在后台运行着。
所以现在的问题就是,你在Start Service中用到了已经被destroy的Activity中的东西,所以。
ps:以上是个人理解而已。建议加强Activity中Service的管理,如当Activity销毁时,也要显示调用stopService()终止Service。
或者是Service本身调用stopSelf()终止自身。
如果只是Bound Service是没有问题的,因为绑定它的Activity销毁时,Service也就销毁了。
但是,当你用Start Service时,启动它的Activity销毁时,Service是不会跟着一起销毁的,而是一直在后台运行着。
所以现在的问题就是,你在Start Service中用到了已经被destroy的Activity中的东西,所以。
ps:以上是个人理解而已。建议加强Activity中Service的管理,如当Activity销毁时,也要显示调用stopService()终止Service。
或者是Service本身调用stopSelf()终止自身。
问题出在后台的服务我也是可以确定的,是在后台服务中运行的过程中重新启动程序,程序就重新绑定服务,可能是这个时候的activity没有更新,依旧沿用了后台服务之前的activity,但我不知道从那里下手,
在你Activity的onDestroy方法调用下面方法可以解决你的问题,虽然不是很完美的解决
// 关闭进程
android.os.Process.killProcess(android.os.Process.myPid());//获取PID
System.exit(0);如果你找到答案 请告诉我
如果服务想保持后台,那么用Start Service就可以了,为什么还要用bind
如果服务想保持后台,那么用Start Service就可以了,为什么还要用bind
项目里需要用到库的对象,和方法,库是一些即时通讯的东西