在Android开发过程中,常需要更新界面的UI。而更新UI是要主线程来更新的,即UI线程更新。如果在主线线程之外的线程中直接更新页面显示常会报错。抛出异常:android.view.ViewRoot$CalledFromWrongThreadException: Only the original ...
分类:
其他好文 时间:
2016-08-10 22:49:33
阅读次数:
217
如果你不带参数的实例化:Handler handler=new Handler();那么这个会默认用当前线程的Looper对象。 一般而言,如果你的Handler是要用来刷新UI的,那么就需要在主线程下运行。 情况: 1 要 刷新UI,handler要用到主线程的Looper对象。那么在主线程Han ...
分类:
其他好文 时间:
2016-08-10 22:19:19
阅读次数:
114
一、多线程简介 1、多线程的由来 2、耗时操作的模拟试验 3、进程和线程 4、多线程的概念及原理 5、多线程的优缺点和一个Tip 6、主线程 7、技术方案 二、Pthread 1、函数 2、参数和返回值 3、使用 三、NSThread 1、创建一个新的线程 2、线程的状态 3、线程的属性 四、互斥锁 ...
分类:
编程语言 时间:
2016-08-10 17:36:09
阅读次数:
255
一、多线程简介 1、多线程的由来 2、耗时操作的模拟试验 3、进程和线程 4、多线程的概念及原理 5、多线程的优缺点和一个Tip 6、主线程 7、技术方案 二、Pthread 1、函数 2、参数和返回值 3、使用 三、NSThread 1、创建一个新的线程 2、线程的状态 3、线程的属性 四、互斥锁 ...
分类:
编程语言 时间:
2016-08-10 16:03:08
阅读次数:
245
一.一个问题 有这样一个问题值得我们思考,若把一些类似于下载的功能(既耗时且不一定有结果)写在Activity(主线程)里,会导致Activity阻塞,长时间无响应,直至页面假死(如果5秒钟还没有完成的话,会收到Android系统的一个错误提示 "强制关闭")。因此,我们需要把这些耗时的操作放在单独 ...
分类:
其他好文 时间:
2016-08-09 17:28:05
阅读次数:
142
最近做项目时出现个问题。
在一个基类中,创建一个Handler对象用于主线程向子线程发送数据,代码如下:
this.mThirdHandler = new Handler(){
@Override
public void handleMessage(android.os.Message msg) {
sup...
分类:
其他好文 时间:
2016-08-09 16:16:15
阅读次数:
120
发烧友 21:58:01import java.util.Date;import java.util.concurrent.RecursiveTask;public class TstForkJoin { public static void main(String args[]) { new Ts ...
分类:
编程语言 时间:
2016-08-09 11:59:20
阅读次数:
142
1、文件“XXX”正在由另一进程使用,因此该进程无法访问此文件。 原因剖析:文件在主线程操作,在子线程中读写操作文件,刚开始没有意识到程序的问题所在,总是在FileStream中报错,google后常规做法是读写文件加锁,但是依旧没有解决问题,最后定位到文件创建时返回流实例,但是没有关闭:File. ...
分类:
Web程序 时间:
2016-08-08 19:07:22
阅读次数:
116
什么是RunLoop? -RunLoop就是消息循环,每一个线程内部都有一个消息循环。 -只有主线程的消息循环默认开启,子线程的消息循环默认不开启。 RunLoop的目的 -保证程序不退出 。 -负责处理输入事件。 -如果没有事件发生,会让程序进入休眠状态 。 事件类型 Input Sources ...
分类:
移动开发 时间:
2016-08-06 23:23:16
阅读次数:
235
原理
Android 的 Handler 机制(也有人叫消息机制)目的是为了跨线程通信,也就是多线程通信。之所以需
要跨线程通信是因为在 Android 中主线程通常只负责 UI 的创建和修改,子线程负责网络访问和耗时操作,
因此,主线程和子线程需要经常配合使用才能完成整个 Android 功能。
Handler 机制可以近似用图 1 展示。MainT...
分类:
移动开发 时间:
2016-08-06 20:39:47
阅读次数:
174