- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在我们制作的应用程序中,我们希望在应用程序挂起时尝试远程用户保存数据。在 Unity 的编辑器和 Android 上,这很简单
WWW www = new WWW(_URL);
while(!www.isDone)
{
Thread.Sleep(100);
}
Debug.Log(www.text);
(完整样本:https://github.com/SixMinute/iOSWWWGet)
但是在 iOS 上,www.isDone
在我们阻塞时永远不会计算为真,所以整个事情就挂起。
这是一个错误,还是设计使然?然后如果它是设计的,那么正确的方法是什么,因为如果我们把它放在 StartCoroutine
后面,它就不会正确地在主线程上,并且在挂起时,发生的事情会被推送到应用程序恢复(这完全违背了我们正在尝试做的事情的目的)。
编辑:在 IRC 上与一些 Unity 开发人员交谈后,他们接受这实际上是代码中的错误,理解我需要这个的原因,并接受需要有一种方法来同步触发 WWW 请求,或在 iOS 上的 OnApplicationPause(true)
流程中调用时启用此功能的其他方式,因为否则(尽管能够轻松地在本地完成)当时无法触发 WWW 请求,唯一的选择是将它们排队直到恢复,这是完全不切实际的。
最佳答案
此时 Unity 不会为 www Action 启动新线程,至少在某些平台(iOS、网络播放器)上是这样。或者,如果是,它会在主线程上设置 WWW.isDone。所以这段代码:
while(!www.isDone)
Thread.Sleep(500);
没用。
关于ios - Unity3D WWW 在 iOS 的主线程上调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30799715/
有人可以向我澄清主线 DHT 规范中的声明吗? Upon inserting the first node into its routing table and when starting up th
我正在尝试使用 USB 小工具驱动程序使嵌入式设备作为 MTP 设备工作。 我知道 Android 从大容量存储设备切换到 MTP 设备已经有一段时间了,并且找到了 source code for M
我是一名优秀的程序员,十分优秀!