【发布时间】:2015-01-16 20:55:53
【问题描述】:
我需要为我的应用程序创建一个 android 服务,该服务需要在调用新的 startservice 方法时杀死同一类的先前服务。
我需要它来将数据从网络加载到我的应用程序。我定期轮询通知 API,并尝试使用不精确警报使用 AlarmManager 启动服务。我似乎无法摧毁它。我希望在启动新服务的情况下销毁以前的服务实例。
我尝试使用stopSelf() 和stopService() 结束服务,但似乎都不起作用。
【问题讨论】:
-
我尝试使用 stopSelf() stopService() 结束服务,似乎不起作用。 @亚历克斯
-
考虑到 Android 的
Service类的架构,这是不可能且不可用的。但是,您可以使用服务的onStartCommand(...),每次您提供服务类作为startService(...)方法的参数时都会调用它来启动新的互联网请求。但是您不能让同一服务的多个实例运行,因此,您不能让同一服务的多个实例进行交互 -
目前尚不清楚为什么需要从互联网下载。您可以尝试使用 OkHttp 等第三方免费库从互联网获取数据。
-
"我只需要终止服务的当前实例并启动一个新实例" -- 重复你自己并不能解释 为什么 你认为你需要这个,所以我们可以帮助您找到更好的解决方案。
-
那 still 并没有解释为什么你认为正确的方法需要你“终止当前的服务实例并启动一个新的实例”。当然,您之前的评论中没有任何内容会“要求”这一点。现有服务实例完全能够下载新数据。
标签: java android android-activity service intentservice