首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >onReceive最大线程休眠时间

onReceive最大线程休眠时间
EN

Stack Overflow用户
提问于 2015-07-21 00:54:41
回答 2查看 500关注 0票数 0

对于安卓应用程序,我需要在onReceive方法启动后睡觉。

通过实验,我发现我可以做一个Thread.sleep <20秒。但是,我需要睡眠超过30秒。一个接一个地放睡眠不会有帮助(6个5秒的睡眠)。

(是的,我知道我不应该在UI线程中这样做,它不是UI线程)。

关于为什么onReceive有最大Thread.sleep以及如何解决这个问题,你有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2015-07-21 00:59:40

为了安排将来的事件,最佳实践是使用Timer,而不是Thread.sleep()。不能使用来自onReceive()的计时器(或任何异步调用),因为该进程在onReceive()返回后终止。

正如@pskink提到的,BroadcastReceivers只打算是短暂的任务。也许你可以发布一些你的设计和你想做的事情,这样我们就可以更好地帮助你。

文档建议

对于运行时间较长的操作,您通常会将服务与BroadcastReceiver结合使用,以使包含进程在整个操作过程中始终处于活动状态

如果您确实实现了服务,则可以使用计时器来实现30秒的延迟。

票数 0
EN

Stack Overflow用户

发布于 2015-07-21 01:05:52

您可以在onReceive中使用view.postDelyed。例如

代码语言:javascript
复制
public void onReceive(...

  mainView.postDelayed(new Runnable() {
    @Override
    public void run() {
      setListRecipients(savedInstanceState.getStringArrayList(RECIPIENTS));
    }
  }, POST_DELAYED_TIME_IN_MILLISECONDS);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31522087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档