高优先级Android服务

时间:2011-09-13 20:42:29

标签: android

我正在考虑为Android实施过度蓝牙视频流服务。

我如何确保:

  • 服务是否以高优先级运行?我想尽量减少延迟。
  • 当内存紧张时,服务列表中的内容很少?

2 个答案:

答案 0 :(得分:8)

要确保您的服务继续运行,您需要做两件事:

  1. 确保拨打startService()而不是(或除了)绑定。这将确保服务继续运行,即使创建它的Activity被终止。

  2. 使用startForegroud()在前台运行服务,以便Android在需要内存时不会回收它。它还要求您创建一个在服务实际启动时发布的Notification,在通知区域中放置一个图标,让用户知道您的服务仍在运行。

  3. 了解更多信息:

    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()期间设置此标志,没有任何区别。