Android-每5分钟向服务器发送一次数据

Android-每5分钟向服务器发送一次数据,android,android-service,alarmmanager,android-intentservice,background-service,Android,Android Service,Alarmmanager,Android Intentservice,Background Service,我的SQLite数据库表中有一些数据。当我的应用程序启动时,我希望每5分钟向服务器发送一次数据 当应用程序关闭时,它应该停止 最好的方法是什么 我应该使用Service还是IntentService 我应该使用AlarmManager、Handler或任何其他东西吗 我知道我的应用程序速度。我不想让它慢下来。有效的方法是什么 如果您仅在应用程序位于前台时进行传输,则可以使用处理程序进行传输。 在onResume()中启动处理程序,并在onPause()中取消它。 并使用AsyncTask或在单

我的SQLite数据库表中有一些数据。当我的应用程序启动时,我希望每5分钟向服务器发送一次数据

当应用程序关闭时,它应该停止

  • 最好的方法是什么
  • 我应该使用
    Service
    还是
    IntentService
  • 我应该使用
    AlarmManager
    Handler
    或任何其他东西吗
  • 我知道我的应用程序速度。我不想让它慢下来。有效的方法是什么

如果您仅在应用程序位于前台时进行传输,则可以使用处理程序进行传输。
在onResume()中启动处理程序,并在onPause()中取消它。 并使用AsyncTask或在单独的线程中执行传输

如果您需要在后台执行stransmit,您可以使用一项服务,并使用AlarmManager对其进行调度。
然后从应用程序的活动启动服务


我不确定IntentService将如何用于此目的。

因为您只想在应用程序处于前台时运行您的进程,那么TimerTask或Handler与Message或Runable结合使用就好了。这不会对你的应用程序的性能造成太大的影响。如果你问这两个人哪一个更好,我会说是Handler。请检查此答案中的详细信息:


但是如果你想要一个非常好的表现,那么我建议你选择AlarmManager。否则,处理程序是一个不错的选择

报警管理器不精确,5分钟的报警计划可能是,当设备处于睡眠状态时,它将以两倍或三倍的时间触发

如果你想要精确,设备不必进入睡眠状态。(我知道这会缩短电池寿命)

如果要防止设备进入睡眠状态,则需要启动带有不可解除通知的前台服务。这就是服务必须调用startForeground()的原因


当设备处于唤醒状态时,Alarmamanager和Handler+Runnable都将是准确的。。。我更喜欢处理器。

您愿意每隔几分钟耗尽电池电量发送数据吗?它始终可以访问充电器。所以我认为这不是一个大问题。服务是一个长时间运行的过程,AlarmManager、TimerTask或Handler将允许您连续运行代码,所以您是否尝试过将它们关联起来?相关:“当应用程序关闭时”,系统将终止您的应用程序,除非它具有前台活动或foregorund服务。离开活动与应用程序死亡(进程死亡)不同。