如何构建我的应用程序以在后台运行

时间:2010-01-05 09:48:38

标签: android

我是Android新手,我需要一些启动建议 我想构建一个应用程序,当用户遇到热门情况时,它将显示出来。

热门的情况我的意思是:

  • GPS /小区坐标在已知区域;
  • 检测到已知的蓝牙设备;
  • 检测到已知的Wi-Fi网络;
  • 天气信息有变化;

我看到有些东西在后台运行,当其中一个子句命中时,它会触发并打开应用程序。

  • 如何开始?
  • 如何确保我的应用不会被关闭?

正如我在某处读到的那样,如果发生内存消耗或消耗太多,Android操作系统将终止应用程序,并且我的应用程序会消耗很多,请重复测量/检查以查看情况是否发生变化。

的问候,
Pentium10

2 个答案:

答案 0 :(得分:2)

您需要在后台运行的应用程序部分使用Service

您可能会发现Application Fundamentals document in the Android Developer Documentation很有帮助。它说的是服务:

  

服务没有可视用户界面,而是在后台无限期地运行。例如,服务可能会在用户处理其他事项时播放背景音乐,或者可能通过网络获取数据或计算某些内容并将结果提供给需要它的活动。

在您的情况下,您可能会发现LocationManager Service有帮助。这是一个系统服务,您可以使用它根据GPS位置通知您的应用程序。

但是,我认为您必须编写自己的服务来监控Wi-Fi,蓝牙和天气。

您可以使用the AlarmManager Service让服务按特定时间间隔执行特定任务。

答案 1 :(得分:0)

这取决于&您要在哪里部署应用程序。根据我的经验,归结为

  1. 您为特定用例创建应用程序,其中电池耗尽比准确结果更重要(展示情况,原型设计......)
  2. 您希望将应用程序分发给用户。

在案例1)中,只需创建一个积极轮询传感器/ Web服务的服务。使用AlarmManager发送REFRESH意图(AlarmService.setRepeating(...) )。

REFRESH意图每次都会重启同步服务,即使它被系统杀死了。每次发出REFRESH意图时都会调用onStart()。您可以在onCreate()中执行重量级设置逻辑,因为每次服务被销毁后都会调用它。警告:这可能会很快耗尽电池。

在案例2中)我将创建多个服务,并让用户为每个服务配置不同的轮询间隔以限制电池消耗。我可以看到,例如,蓝牙应该比GPS更有规律地轮询,因为蓝牙设备突然出现的可能性比用户移动速度极快。

天气听起来非常昂贵(网络查询,可能会触发网络连接!)

请不要试图在案例2中过于坚持你的应用程序。对于手机来说,杀死内存/电源耗尽服务通常很有意义。