Android 延迟动作与广播接收机

Android 延迟动作与广播接收机,android,service,timer,broadcastreceiver,timertask,Android,Service,Timer,Broadcastreceiver,Timertask,在这种情况下,我必须在电源连接到设备后N秒启动一些非UI操作。用户也可以通过UI启动该操作 我有一个在AndroidManifest.xml中定义的BroadcastReceiver,它监听连接的动作 我有一个服务,它在启动命令时执行所需的操作。我的问题是-当广播触发动作时,启动该服务的正确方式是什么 我有两个选择: 一次性计时器任务。然而,我认为这可能是错误的,因为根据文档,我无法从BroadcastReceiver启动任何异步任务 重新设计服务: 如果操作是由用户触发的,则在启动命令时启动

在这种情况下,我必须在电源连接到设备后N秒启动一些非UI操作。用户也可以通过UI启动该操作

我有一个在AndroidManifest.xml中定义的BroadcastReceiver,它监听连接的动作

我有一个服务,它在启动命令时执行所需的操作。我的问题是-当广播触发动作时,启动该服务的正确方式是什么

我有两个选择:

  • 一次性计时器任务。然而,我认为这可能是错误的,因为根据文档,我无法从BroadcastReceiver启动任何异步任务

  • 重新设计服务:

    • 如果操作是由用户触发的,则在启动命令时启动操作
    • 启动计时器任务并在计时器快照时执行操作-与1中的逻辑相同。但内部服务-如果行动是由广播触发的
  • 我倾向于2。这将使代码更复杂一些,但似乎这是唯一正确的方法

    -Lev正确的方法是#2。这是因为一旦您离开onReceive,应用程序进程可能会被终止。在这种情况下,您的
    TimerTask
    不会有帮助

    作为替代解决方案,使用及其功能来计划挂起的服务意图。这可能是您的最佳解决方案。

    正确的方法是#2。这是因为一旦您离开onReceive,应用程序进程可能会被终止。在这种情况下,您的
    TimerTask
    不会有帮助

    作为替代解决方案,使用及其功能来计划挂起的服务意图。这可能是您的最佳解决方案