【问题标题】:Repeatedly execute functions in app at regular intervals定期重复执行app中的功能
【发布时间】:2014-05-09 08:28:22
【问题描述】:

我创建了一个 Android 应用,现在需要每 6 分钟上传一次纬度和经度。这需要在登录后开始,在关闭应用或注销时结束,并在手机进入空闲模式或访问其他应用时保持运行。

Google 建议以下选项;

  1. 创建一个服务并在其中放置一个定时器任务。
  2. 使用警报管理器。

这两个选项哪个更好?还有其他选择吗?

【问题讨论】:

  • 感谢 Mark 纠正有问题的语法错误。
  • 我认为服务+计时器会更好

标签: android


【解决方案1】:

首先,您肯定需要ServiceActivitys 不能依赖,因为一旦暂停,(例如访问另一个应用程序),绝对不能保证即使 onDestroy() 没有被调用,它们也不会被中止。

AlarmManager 是触发您需要的 6 分钟轮询的最可靠方式,因为即使手机长时间休眠也会执行此操作。使用它来触发您的服务(可能在 6 分钟的暂停期间已停止)。这是我所知道的唯一最可靠的选择。

如果ServiceActivity 或进程结束,TimerTask 将不起作用。

【讨论】:

    【解决方案2】:

    您必须创建主活动,在其中调用 uithread 上的 locationmanager,这使您在您的位置上的经纬度发生了变化,并且在注销时只需删除位置管理器的所有更新

    【讨论】:

    • 你好,阿卡什,想在每 6 分钟彻底完成应用程序时上传 lat long。
    • 每 6 分钟。应该在活动上下文中重复启动处理程序吗?如果活动被破坏了怎么办。
    • 然后使用带有时间表的计时器
    • 做同样的事情。但不是最好的。一些定时器,当手机长时间空闲时,定时器任务停止工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-01
    • 1970-01-01
    • 2017-10-13
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多