应用程序退出或移至后台时Android关闭服务

时间:2013-11-21 00:12:43

标签: android android-service android-bluetooth

我正在开发一个应用程序,我通过蓝牙传输实时传感器数据,然后有几个活动可以在这个实时数据流上工作,以不同的方式显示它(例如统计数据,直方图,趋势图等)。 p>

我需要维护跨活动的蓝牙链接,我还需要维护跨活动接收数据到缓冲区(例如,您可以查看趋势图活动中的数据,然后跳转到没有它的统计信息活动中清除数据。)

我是如何做到的,是扩展应用程序并让它拥有一个自定义类,其中包含所有相关的蓝牙对象(蓝牙设备,IOstreams。)然后当用户通过首页Activity启动连接时,蓝牙连接打开并启动服务,从输入流中读取数据,转换它并将其存储到arraylist中。然后任何显示活动都适用于此ArrayList。

这很有效。但是,当应用程序被杀死或放入后台时,我无法弄清楚如何关闭蓝牙连接和服务。因为确保蓝牙连接正确关闭很重要,否则很难重新建立连接。

关于我迄今为止所提出的最好的方法是实现本文https://stackoverflow.com/a/15573121/3015368中描述的任务转换计时器,并在计时器完成时关闭连接和服务。

我希望有更好的方法可以做到这一点?

1 个答案:

答案 0 :(得分:0)

你可以通过制作一个指向你的服务类的意图来停止服务,并且如果你的服务正在运行就调用这个函数,如果它没有运行就会杀掉它然后就不会做任何事情

stopService(/* intent name*/)

你可以在onPause()方法中做到这一点,当你的应用程序进入后台时会自动调用 然后,如果你需要重新启动服务,你可以调用onResume(),当你的应用程序获得焦点时,它也会自动被调用

因此:你需要覆盖onPause()和onResume()方法。