在android开发过程中,耗时操作我们会放在子线程中去执行,而更新UI是要主线程(也叫做:UI线程)来更新的,自然会遇到如何更新主线程UI的问题。如果在主线程之外的线程中直接更新页面显示常会报错。抛出异常:android.view.ViewRoot.CalledFromWrongThreadExc ...
分类:
移动开发 时间:
2016-05-10 12:41:04
阅读次数:
197
Invoke()的作用是:在应用程序的主线程上执行指定的委托。一般应用:在辅助线程中修改UI线程( 主线程 )中对象的属性时,调用this.Invoke(); 在多线程编程中,我们经常要在工作线程中去更新界面显示,而在多线程中直接调用界面控件的方法是错误的做法,Invoke 和 BeginInvok ...
看了一些关于信号量的线程同步方式,今天用了一下。 我对于线程同步一直有疑问,在主线程和子线程处理时间不相同的时候,用这种信号量,如何保证同步。 假如主线程比较快,信号量连加了n个,但是子线程就不断减这个n,减到0。但是如果主线程太快太快,需要停一停,比如缓冲区快溢出了,主线程需要挂起。 由什么来唤醒 ...
分类:
编程语言 时间:
2016-05-09 22:07:15
阅读次数:
397
分享牛原创,CountDownLatch类的使用,CountDownLatch是一个工具类,运行主线程开启子线程的时候,子线程还没有结束的时候,主线程可以一直等待,直到初始化的现成的计数器count为0,主线程就可以不用等待继续执行了。count只能在实例化CountDownLatch类的时候初始化,没有其他的办法count注入值。下面看一下java.util.concurrent.CountDo...
分类:
其他好文 时间:
2016-05-09 18:51:36
阅读次数:
254
iOS动画 原文链接: http://www.cnblogs.com/zzuliliu/p/5468732.html 本篇文章主要讲解iOS中动画的使用。 1、Core Animation,核心动画。 核心动画执行过程都是在后台操作的,不会阻塞主线程。Core Animation是直接作用在CALa ...
分类:
移动开发 时间:
2016-05-09 09:39:16
阅读次数:
240
近来找了一些关于android线程间通信的资料,整理学习了一下,并制作了一个简单的例子。 andriod提供了 Handler 和 Looper 来满足线程间的通信。例如一个子线程从网络上下载了一副图片,当它下载完成后会发送消息给主线程,这个消息是通过绑定在主线程的Handler来传递的。 在And ...
分类:
移动开发 时间:
2016-05-09 08:31:27
阅读次数:
221
一、线程的基本概念 线程理解:线程是一个程序里面不同的执行路径 每一个分支都叫做一个线程,main()叫做主分支,也叫主线程。 程只是一个静态的概念,机器上的一个.class文件,机器上的一个.exe文件,这个叫做一个 进程。程序的执行过程都是这样的:首先把程序的代码放到内存的代码区里面,代码放到代 ...
分类:
编程语言 时间:
2016-05-07 18:17:51
阅读次数:
237
一、简介 ①、我们不能在子线程中去访问UI空控件,这是时候只能通过Handler将更新UI的操作放到主线程中去执行 ②、Handler的组成:messageQueue和Looper的支持 ③、MessageQueue:作用:存储了一组消息,以队列的形式对外提供插入和删除的工作。实际上是运用单链表的数 ...
分类:
移动开发 时间:
2016-05-07 16:39:09
阅读次数:
232
AsyncTask介绍 Android的AsyncTask比Handler更轻量级一些,适用于简单的异步处理。 首先明确Android之所以有Handler和AsyncTask,都是为了不阻塞主线程(UI线程),且UI的更新只能在主线程中完成,因此异步处理是不可避免的。 Android为了降低这个开 ...
分类:
其他好文 时间:
2016-05-07 15:01:57
阅读次数:
135
我们都知道在主线程(即UI线程)要发送消息的话,只需要创建一个Handler即可,但你试下在子线程里面创建一个Handler,然后发送消息,你会发现程序报如下异常了,“can't create handler inside thread that has not called Looper.prepare();”
new Thread(new Runnable() {
@Overr...
分类:
移动开发 时间:
2016-05-07 11:16:59
阅读次数:
204