2012-02-09 52 views
1

我上由两个部分组成Android的长时间运行的服务和数据库

程序工作

服务组件将读取发送各种系统功能(CPU使用率,内存使用率,正在运行的任务数,短信,拨打的电话等)每隔预定时间间隔说15分钟。并将这些读数/数据保存在数据库中。

活动组件将从SQL数据库文件读取数据并处理该信息。

我的问题是

  1. 什么样的服务做我必须创建,将留永远活着,直到它也应该自动系统重新启动后重新启动活动停止?

  2. 有没有人得到的服务将数据写入到数据库的例子吗?

  3. 我可以调用从服务父活动?

+0

哦,你真的需要接受一些答案之前有人会麻烦阅读你的问题 – 2012-02-09 16:17:43

+0

我只有在几天前获得标记答案的权限。你可以请直接我到我的问题,我没有接受正确的答案 – 2012-02-13 13:57:13

+0

http://stackoverflow.com/users/777593/khurram-majeed?tab=questions&sort=newest – 2012-02-13 14:23:44

回答

3

听起来像一个相当标准的Service。请阅读Service lifecycle

答案:

  1. 任何服务就行了。您将需要一个BroadcastReceiver,用于侦听启动时启动服务的意图BOOT_COMPLETED
  2. Service对象是Context对象,所以你可以做一个SQLite数据库,你可以从一个Activity做任何事情。没有不同。
  3. 定义“调用”和“父活动”。您可以通过标准startActivity()方法Context从服务中启动Activity。如果在启动时从BroadcastReceiver开始Service,则它是一个独立的服务,没有连接到任何Activity,所以没有父母Activity

请注意,Service可能并不是绝对需要您陈述的意图。如果你只做很少的事情,你可能会遇到AlarmManager报警。这样你就不会离开Service运行 - 并消耗资源 - 对于你每15分钟只处理一次的东西。

+0

家长活动是我的程序的活动组成部分它会启动服务...根据您的意见,我可以假设我可以通过AlarmManager在一段时间后自动启动我的活动..我必须从系统中读取各种功能..是否有可能从活动中完成所有功能有ANR(应用程序没有响应)错误? – 2012-02-09 16:45:33

+0

是的,'AlarmManager'能够启动任何东西。而且你是否得到ANR与你如何实现'Service'的启动无关。 'Service'在相同的进程中运行,并在任何'Activity'的主线程中运行。如果由于“服务”处理而得到ANR,则需要将该处理分解为不同的“线程”。 – 2012-02-09 16:49:03

相关问题