android初学者,刚开始并没有意识到,android中更新UI只能用UI线程,写了一个下载线程,在线程里更新progessbar,并用textview显示下载进度public void listenProgress(){ new Thread(new Runnable() { @Overr...
分类:
编程语言 时间:
2015-08-31 13:13:34
阅读次数:
193
弱引用(WeakReference)
用于非必需对象。被弱引用关联的对象只能生存到下一次垃圾收集发生之前。当垃圾收集器工作时,无论当前内存是否足够,都会回收掉只被弱引用关联的对象。
1. 非UI线程处理Bitmap(可以替换为其它对象)以下摘自官网class BitmapWorkerTask extends AsyncTask {
private final WeakReference im...
分类:
移动开发 时间:
2015-08-28 19:53:50
阅读次数:
382
在Delphi里我记得是使用TThread.Synchronize(TThreadMethod),原理是利用了一个隐藏窗口来处理。在QT Debug模式一下,碰到了同样的问题,显示错误:cannot send events to objects owned by a different thread...
分类:
编程语言 时间:
2015-08-19 00:06:42
阅读次数:
315
当android应用程序运行时,一个主线程被创建(也称作UI线程),此线程主要负责处理UI相关的事件,由于Android采用UI单线程模型,所以只能在主线程中对UI元素进行操作,如果在非UI线程直接对UI进行了操作,则会报错,...
分类:
移动开发 时间:
2015-08-12 06:47:20
阅读次数:
179
这个坑比较隐晦, 一般不容易出现. 有可能在使用AsyncTask时, 明明就是在postResult()方法里设置UI, 却被告知不能在非UI线程设置UI的异常. 这实际上应用App启动时的一个bug.?AsyncTask是在初始化的时候, 自己取当...
分类:
移动开发 时间:
2015-08-04 16:05:00
阅读次数:
192
Android中实现view的更新有两组方法,一组是invalidate,另一组是postInvalidate,其中前者是在UI线程自身中使用,而后者在非UI线程中使用。
Android提供了Invalidate方法实现界面刷新,但是Invalidate不能直接在线程中调用,因为他是违背了单线程模型:Android UI操作并不是线程安全的,并且这些操作必须在UI线程中调用。
Android程序中可...
分类:
移动开发 时间:
2015-07-27 19:03:52
阅读次数:
151
在“加载大图”文章中提到的BitmapFactory.decode*方法,如果源数据是在磁盘、网络或其它任何不是在内存中的位置,那么它都不应该在UI线程中执行。因为它的加载时间不可预测且依赖于一系列因素(磁盘读写速度、图片大小、CPU频率等)。如果在主线程中执行这个操作,一旦它阻塞了主线程,就...
分类:
移动开发 时间:
2015-06-15 22:04:44
阅读次数:
345
Android网络请求库:android-async-http开源框架
之前有一篇描述了客户端请求服务器端的方式—Post的请求方式。今天介绍一个请求服务器的一个开源库—android-async-http库。
1. 概念:
这个网络请求库是基于Apache HttpClient库之上的一个异步网络请求处理库,网络处理均基于Android的非UI线程,通过回调方法(匿名内部...
分类:
移动开发 时间:
2015-06-04 09:56:37
阅读次数:
3960
Processing Bitmaps Off the UI Thread 非UI线程加载图片BitmapFactory.decode*一系列方法,在之前的高效加载大图的文章中讲到过。
如果图片的数据源是磁盘,或则网络(内存以外的其他地方),那么解析图片的方法不应该在UI线程中执行。这些数据加载任务所要花费的时间有许多不可控因素,(例如:磁盘读取速度,图片的大小,CPU的频率,等等)如果这些任务阻塞...
分类:
编程语言 时间:
2015-05-31 16:55:09
阅读次数:
124
【Android线程机制】 出于性能考虑,Android的UI操作并不是线程安全的,这就意味着如果有多个线程并发操作UI组件,可能导致线程安全问题。为了解决这个问题,Android制定了一条简单的规则:只允许UI线程修改Activity里的UI组件 当一个程序第一次启动时,Android会同时启动一...
分类:
编程语言 时间:
2015-05-29 13:51:58
阅读次数:
274