我正在构建一个应用程序,它将定期监控电池状态、wifi 连接和位置数据,并将结果写入文件(然后将它们发送到服务器)。在安装应用程序监控时应该禁用 - 但启用它的用户应该在重新启动后仍然存在。经过大量阅读后,我意识到我基本上有两种选择:
- 子类化
Service
并从我的活动中删除它。将它设置在前台、STICKY 等等,并希望它不会被 android 杀死 - 如果 android 重新创建它,请注意(实际上应该有 3 个服务,因此它们之间的同步可能会很混乱)。在服务中启动一个线程(我猜不需要执行器)并拥有它Thread.sleep(REGULAR_INTERVAL)
。醒来,收集数据将它们写入文件。广播收集的信息并在我的活动中显示它(如果它恰好正在运行)(它将注册一个广播接收器)。冲洗并重复while(true)
。有办法打断这个 - 让我的活动向 AlarmManager 注册一个 PendingIntent - 这将运行每个 REGULAR_INTERVAL。我没有深入研究这种方法的技术细节 - 但我希望我能够让这个 PendingIntent 创建并运行一个 IntentService (这似乎是要走的路 - 拥有免费的线程机器以及关闭在其自己的)。这种方法的一些骨架代码将受到欢迎。
我想我必须在两种情况下都注册一个启动接收器来检查共享首选项(已经这样做了),如果 1 启动服务,而如果 2 为警报事件注册一个接收器并设置警报管理器- 那是我需要一些骨架代码的部分。
那么 - 在我开始构建这个之前 - 这将是首选方法吗?
回顾一下 - 应用程序应该监控一些手机属性并将它们写入文件,直到用户选择关闭它。