【Android线程机制】 出于性能考虑,Android的UI操作并不是线程安全的,这就意味着如果有多个线程并发操作UI组件,可能导致线程安全问题。为了解决这个问题,Android制定了一条简单的规则:只允许UI线程修改Activity里的UI组件 当一个程序第一次启动时,Android会同时启动一...
分类:
编程语言 时间:
2015-05-29 11:24:36
阅读次数:
185
这里说的交互方式应该指的是如何在非UI线程中修改UI线程中的组件。
一般来说有三种方式:
1.Activity.unOnUiThread(Runnable)
如果当前线程是UI Thread,立马执行action.run方法;否则将Runnable发送到UI Thread的event 队列中。
2. view.post(Runnable)...
分类:
编程语言 时间:
2015-05-27 10:14:53
阅读次数:
464
测试service中使用了一个Toast来打印log。 提示无法调用Looper.prepare() 加入后代码正常执行。 ?Looper.prepare();????
?Toast.makeText(getApplicationContext(),?"Services?Thread",?Toast.LENGTH_LO...
分类:
移动开发 时间:
2015-05-26 21:39:48
阅读次数:
800
Handler创建,必须有个一个Looper,主线程自己创建了。其他线程需要自己创建,默认是没有的。创建方法 1. 这种方法是先创建一个系统定义好的HandlerThread,这个是跑在非UI线程中的,已经创建好了looper,直接用就可以了.创建handler有多个构造函数,具体看源码 ...
分类:
移动开发 时间:
2015-05-19 22:13:27
阅读次数:
184
这个很不错的第三方开源类库,针对Android开发中发送http请求的。它的网络请求自动在非UI线程里执行,你不需要任何额外的操作(比如手动new一个Thread之类)。项目的官方网站:http://loopj.com/android-async-http/,对应的github地址:https://...
分类:
移动开发 时间:
2015-05-12 12:56:27
阅读次数:
259
每个Android应用程序都运行在一个dalvik虚拟机进程中,进程开始的时候会启动一个主线程(MainThread),主线程负责处理和ui相关的事件,因此主线程通常又叫UI线程。而由于Android采用UI单线程模型,所以只能在主线程中对UI元素进行操作。如果在非UI线程直接对UI进行了操作,则会...
分类:
移动开发 时间:
2015-05-04 08:38:21
阅读次数:
199
Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面Android异步处理二:使用AsyncTask异步更新UI界面Android异步处理三:Handler+Looper+MessageQueue深入详解Android异步处理四:AsyncTask的实现原理Andro...
分类:
移动开发 时间:
2015-04-30 17:50:44
阅读次数:
301
目录:Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面Android异步处理二:使用AsyncTask异步更新UI界面Android异步处理三:Handler+Looper+MessageQueue深入详解Android异步处理四:AsyncTask的实现原理An...
分类:
移动开发 时间:
2015-04-30 17:39:13
阅读次数:
267
Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面Android异步处理二:使用AsyncTask异步更新UI界面Android异步处理三:Handler+Looper+MessageQueue深入详解Android异步处理四:AsyncTask的实现原理Andro...
分类:
移动开发 时间:
2015-04-30 17:34:40
阅读次数:
293
//创建一个用于刷新当前系统时间的线程 new Thread() { public void run() { // 此处为另外一个单独线程,非UI线程 Display dis=shell...
分类:
编程语言 时间:
2015-04-27 14:59:45
阅读次数:
241