当我打开项目的活动时,我调用startService(Intent intent)
方法来启动新服务。
当活动被破坏时,服务不应该被杀死(因为我没有使用bindService()
方法),但事实是,当我关闭我的活动时,服务被杀死,一秒钟之后系统创建一个新服务(我验证了,系统再次调用我的服务的onCreate()
方法)。我只需要保留一项服务怎么办?谢谢
答案 0 :(得分:19)
要让服务独立于您的应用程序的主要流程运行,并确保Android在执行某些操作时不会杀死它,您应该做/尝试两件事。
在单独的流程中运行您的服务。您可以通过在清单中向服务声明添加以下属性来实现此目的:
android:process=":somenamehere"
当您的服务正在运行且您不希望它被操作系统杀死时,您必须使用startForeground(int id, Notification notification)
方法。当服务完成正在进行的操作并且可以被操作系统杀死时,请致电stopForeground(boolean removeNotification)
。 " startForeground"需要通知作为参数,因为每个前台服务必须显示通知,以便用户意识到它
我希望这会对你有所帮助。
答案 1 :(得分:5)
我的意思是我按住主页按钮,然后从app open列表中删除我的活动
那不会"关闭"一个活动。这会终止你的过程。欢迎用户在用户需要时终止您的流程,无论是通过这种方式还是通过第三方任务管理器应用程序。您无能为力 - 您无法阻止用户终止您的流程。由于你的过程也会因其他原因而停止(例如,纯粹的年龄),你有足够的理由来处理这种情况。
答案 2 :(得分:0)
编辑:请参阅CommonsWare的回答
旧答案:您应该覆盖public int onStartCommand(Intent intent, int flags, int startId)
方法并返回START_STICKY
值作为服务模式。
除非您明确致电stopService(Intent)