1.子类化Service并从我的Activity中启动它。将其设置为前台、STICKY等,希望它不会被Android杀死 - 并且要注意如果Android重新创建它(实际上应该有3个服务,因此它们之间的同步可能会很混乱)。在服务中启动一个线程(我想不需要执行器),并让它Thread.sleep(REGULAR_INTERVAL)。唤醒,收集数据,将它们写入文件。广播收集的信息,并在我的Activity运行时显示它(它将已注册广播接收器)。反复这个过程while(true)。有一种方法可以中断这个过程。
2.使我的Activity向AlarmManager注册PendingIntent - 它将每隔REGULAR_INTERVAL运行一次。我还没有深入研究这种方法的技术细节,但我希望我能够让这个PendingIntent创建并运行IntentService(这似乎是正确的方法 - 免费获得线程机制以及自动关闭)。欢迎为这种方法提供一些框架代码。
我认为在两种情况下都必须注册引导接收器以检查共享首选项(已经完成了此操作),并且在情况1中启动服务,而在情况2中注册闹钟事件的接收器并设置闹钟管理器 - 这是我需要一些框架代码的部分。
所以 - 在我开始构建之前 - 哪种方法更好?
简而言之 - 应用程序应监视一些手机属性并将它们写入文件,直到用户选择关闭它。
Service
来收集某些数据,可能会消耗用户手机的电量,这样做可能会让用户对您产生不满。建议使用第二种方法,即使用IntentService
并在需要时添加额外的 WakeLocks(可以查看 CommonsWare 的WakefullIntentService
)。 - user