当异步执行任务时,通常需要确保在主线程上运行一段代码。例如,您可能要异步访问REST API,但将结果放在屏幕上的UILabel中。在更新UILabel之前,必须确保您的代码在主线程上运行:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ //执行昂贵的任务 //... //现在,在更新UI之前,确保我们回到主线程上 dispatch_async(dispatch_get_main_queue(), ^{ label.text= //.... }); }
每当您更新屏幕上的视图时,请始终确保您正在主线程上执行此操作,否则可能会发生未定义的行为。
我正在尝试使用AmazonS3Client进行putobject。奇怪的是,它似乎只有当我在iOS主线程上运行我的putObject代码时才起作用。 代码基本上是这样的: 谢谢,凯文 附言。我尝试在一个非主线程上分配函数调用,结果相同。
我确信这两个列表都不是空的,并且正在调用,但是没有调用order execution run方法....
问题内容: 我刚刚遇到了这个“错误”,但是我不确定这是否是故意的:代码: 在第一个示例中,它是在swing线程上执行的,但在第二个示例中,它不是,尽管我认为应该这样做。 这是错误还是故意的? 问题答案: 在我看来,这似乎是您的误解 第一行就像在说:“好吧,秋千,我想要你做的是”。所以Swing执行它 第二行就像是说:“确定,Swing,我要您执行的是方法返回的对象的方法”。一个是方法, 我现在执行
问题内容: 主线程将在子线程完成执行之前退出? 我读了两篇文章 http://www.cs.mtu.edu/~shene/NSF-3/e-Book/FUNDAMENTALS/thread- management.html 在以上文章的“线程终止”段中,它用红色表示“如果父线程终止,则其所有子线程也终止。” http://www.roseindia.net/java/thread/overview-
问题内容: 这是一个普遍的Java问题,而不是Android的第一个问题! 我想从二级线程的上下文中了解如何在主线程上运行代码。例如: 这类事情-我意识到我的示例有点差,因为在Java中,您不需要进入主线程即可打印出某些内容,并且Swing也具有事件队列- 但在一般情况下,您可能需要在后台线程的上下文中,在主线程上运行Runnable。 编辑:为了进行比较-这是我在Objective-C中的做法:
我使用的房间用于存储有关购物车详细信息。 我想删除主线程中的记录。我出错了 无法访问主线程上的数据库,因为它可能会长时间锁定 我检查了下面的链接,但没有帮助我 使用room(rxjava)执行删除 如何在android room和rxjava 2中插入数据并获取id作为out参数? 道阿ccess.java 应用班 我的异步任务正在工作 如何在RxJava中实现这一点。因为我的DAO删除返回无效?