我在我的Android APP上有一个后台服务,它正在获取我的GPS位置并将其发送到远程数据库.它工作得很好.
问题是当我想要停止服务......它不会停止:S.也没有出现logcat上的异常或错误......它根本不会停止.
这是启动我的srvice的代码(带按钮):
startService(new Intent(GPSLoc.this, MyService.class)); //enciendo el service
Run Code Online (Sandbox Code Playgroud)
这是我停止它的代码(在onactivityresult方法上):
stopService(new Intent(GPSLoc.this, MyService.class));
Run Code Online (Sandbox Code Playgroud)
我已经调试了应用程序,并且我检查了每次调试它时都调用了stopService代码行,但它没有停止......
我确信它没有停止导致我的数据库,当我按下按钮停止服务时,我仍然从模拟器中恢复gps位置.
我做得不好?
我有一个服务,我相信它已经在前台运行,我如何检查我的实现是否正常?
我想在销毁前台服务后删除通知.我试着打电话stopForeground(true)从onDestroy()和unbind().尽管调用了onUnbind()和onDestroy()(我可以从日志中看到它),但仍然存在通知.我通过电话unbindService(playerConnection)和stopService(this)我的活动来停止服务.
为什么不这样做?有关如何在销毁服务时删除通知的任何想法?
更新:在玩通知时我注意到了一件有趣的事情.我在服务中做了一个特殊的方法:
fun hideNotification() {
stopForeground(true)
Log.d("PlayerService", "hideNotification")
}
Run Code Online (Sandbox Code Playgroud)
按下按钮时,我从我的活动中调用它.它删除了通知.但是从activity的onStop()或服务的onUnbind()或onDestroy()调用的相同函数却没有.我无法理解这些情况之间的区别.