新版本的android系统已经不允许在UI线程中进行网络请求了,必须新建一个线程. 代码实操: 头文件: #ifndef __TestThreadHttp_SCENE_H__ #define __TestThreadHttp_SCENE_H__ #include "cocos2d.h" #include "network\HttpRequest.h" #include "network\HttpClient.h" #include "n…
可以有两个办法让NSURLConnection在子线程中运行,即将NSURLConnection加入到run loop或者NSOperationQueue中去运行. 前面提到可以将NSTimer手动加入NSRunLoop,Cocoa库也为其它一些类提供了可以手动加入NSRunLoop的方法,这些类有NSPort.NSStream.NSURLConnection.NSNetServices,方法都是[scheduleInRunLoop:forMode:]形式.我暂时只介绍下最常用的NSURLCon…
子线程中得所有数据都可以直接拿到主线程中使用 //当触摸屏幕的时候,从网络上下载一张图片到控制器的view上显示 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { //获取一个全局并行队列 dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, ); //把任务添加到队列中执行 dispatch_asyn…
提起View.post(),相信不少童鞋一点都不陌生,它用得最多的有两个功能,使用简便而且实用: 1)在子线程中更新UI.从子线程中切换到主线程更新UI,不需要额外new一个Handler实例来实现. 2)获取View的宽高等属性值.在Activity的onCreate().onStart().onResume()等方法中调用View.getWidth()等方法时会返回0,而通过post方法却可以解决这个问题. 本文将由从源码角度分析其原理,由于篇幅原因会分(上).(下)两篇来进行讲解,本篇将分…
一直想写一篇关于runloop学习有所得的文章,总是没有很好的例子.游戏中有一个计时功能在主线程中调用: 1 + (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo; 的方法.但是当每0.01秒进行一次repeat操作时,NSTimer是不准的,严重滞后,…
问题描写叙述 做过android开发基本都遇见过 ViewRootImpl$CalledFromWrongThreadException,上网一查,得到结果基本都是仅仅能在主线程中更改 ui.子线程要改动 ui 仅仅能 post 到主线程或者使用 handler 之类.可是细致看看exception的描写叙述并非这种."Only the original thread that created a view hierarchy can touch its views".仅仅有创建该 v…
我记得以前写过一次关于多线程的调用及更新的文章,由于时间比较久了,现在一时没找到.在做项目的时候,用到了多线程,还是有很多的同事在问多线程更新主窗体的事情,现在就这个事情做个记录. 说起多线程之间的更新或调用,无非都是代理之类的,可能很多人有不同的看法. 今天也不想和大家讨论底层的实现,就目前的问题而说,告诉大家两个常用的方式进行线程间的调用: 1)定义一个委托代理实现回调函数: 2)在子线程中使用Invoke返回主线程: 刚刚我已经说了,今天主要说代理的使用,如果你对这方面的知识点相对薄弱的话…
方法一:用Handler 1.主线程中定义Handler: Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { : //完成主界面更新,拿到数据 String data = (String)msg.obj; updateWeather(); textView.setText(data);…
转:http://blog.sina.com.cn/s/blog_3fe961ae0100mvc5.html 在Android平台下,进行多线程编程时,经常需要在主线程之外的一个单独的线程中进行某些处理,然后更新用户界面显示.但是,在主线线程之外的线程中直接更新页面显示的问题是:系统会报这个异常: ERROR/AndroidRuntime(1222): android.view.ViewRoot$CalledFromWrongThreadException: Only the original…
1.创建子线程 C++创建线程的方式比较多 1)最简单易用的<thread>头文件,但是这种方法创建的子线程中无法给主线程PostMessage消息(也可能是我操作有误,总之没成功) 2)3)4)参见VC创建线程的三种方法https://blog.csdn.net/u014568921/article/details/44262645 第3.4种用在MFC程序中貌似也不行,多次尝试之下我用了AfxBeginThread()方法成功了 void CMFCDLLTestDlg::OnBnClick…