android - 定期更新后台数据(Android)

标签 android database sqlite android-intent android-background

我的应用程序的主要目标是,当按下按钮时:

  1. 从传感器收集数据
  2. 在数据库中存储数据
  3. 定期重复(每 X 秒)

我想让它在后台完成,如果 Main Activity 被销毁,后台进程仍然在运行。因此,如果您删除该 Activity ,我希望它仍在运行。

我现在正在做的是使用一个带有 Intent ServiceAlarmManager 来设置数据的定期记录,但是每当我销毁 Activity ,因为它们是相关的,所以我的应用程序崩溃了。

我知道运行后台进程有不同的方式,但没有一种适合我:

  • Service:依赖于MainThread,所以如果MainActivity被销毁, 崩溃
  • Intent Service:目前正在使用的,但就目前而言 与AlarmManager相关,即与MainActivity相关,当它是 毁坏、崩溃。
  • AsyncTask:这个的问题在于它是 应该在后台完成一项任务并且它完成了,但是我 真正想要的是定期执行,直到用户说停止。所以 这不是一次性的事情。

有没有其他方法可以有后台服务? 前面提到的任何内容都可以用于我的目的吗? 你建议我怎么做?

感谢您的回答。

最佳答案

尝试使用 android:process=":servicename" 在单独的进程中启动服务在 AndroidManifest.xml 中。如果服务正在另一个进程中运行,它不会被 Activity 杀死。

关于android - 定期更新后台数据(Android),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23513114/

相关文章:

sql-server - 将表主 ID 连接为具有总和值的字符串

java - 访问游标时出现异常

android - 无法在未调用 Looper.prepare() 的线程上 toast

php - fork PHP 应用程序中的单个数据库连接

Android在手机上浏览SQLite数据库

ios - 如何从服务器获取数据并安装在sqlite中

android - greenDAO 不在表中生成 FOREIGN KEY(...) 约束

android - 如何使用 DatePicker 编辑我的日期?

java - 像 Uber Android 一样在 map 上旋转标记和移动动画

android - 如何在 Lollipop 中获取 `getTopActivity` 名称或获取当前正在运行的应用程序包名称?