我正在考虑为Android实施过度蓝牙视频流服务。
我如何确保:
答案 0 :(得分:8)
要确保您的服务继续运行,您需要做两件事:
确保拨打startService()
而不是(或除了)绑定。这将确保服务继续运行,即使创建它的Activity被终止。
使用startForegroud()
在前台运行服务,以便Android在需要内存时不会回收它。它还要求您创建一个在服务实际启动时发布的Notification
,在通知区域中放置一个图标,让用户知道您的服务仍在运行。
了解更多信息:
http://developer.android.com/reference/android/app/Service.html http://developer.android.com/guide/topics/fundamentals/bound-services.html
答案 1 :(得分:1)
如果你和我一样处于同样的境地,被迫使用bindService(),解决办法是设置
Context.BIND_IMPORTANT
该电话中有标志。这将服务的优先级提升到绑定应用程序的优先级,如果它是前台应用程序,则是最高的。如果您不使用该标志,该服务需要与所有其他后台服务争夺10%的资源。 (其他90%是为前台应用程序保留的。)
请注意,手动设置服务的线程优先级,而不在bindService()期间设置此标志,没有任何区别。