AsyncTask是sdk封装好的一个轻量级的用于执行异步任务的工具类,所谓轻量级,就是说对于一两个线程就能完成的任务,AsyncTask能够非常快速方便的实现,但是对于像ListView每个item都需要进行刷新的异步任务,AsyncTask就没有那么容易去做了,而且做出来的效果也不好。
下面来看一下这个类的基本结构
public class MyTask extends AsyncTa...
分类:
移动开发 时间:
2015-07-04 11:17:31
阅读次数:
129
Part1:
由于在我们的程序中,不允许一些耗时的任务在主线程中出现,主要是为了防止阻塞主线程而导致的
Anr(Application not Responding),一些耗时任务主要包括:
网络访问,缓慢的磁盘操作,比较耗时的算法
当我们的主线程在一定时间里对某一事件的处理超过一定时间后会主线程会崩溃报ANR,
通常的解决方案:采用子线程技术来将耗时任务与主线程进行脱离
1、hand...
分类:
其他好文 时间:
2015-06-01 13:20:29
阅读次数:
114
如果你看到上一篇android耗时任务_HandlerThread中所提到的BackService类了的话,那么你肯定有一个冲动,就是把它封装起来方便使用。
别急,Android SDK早就已经为我们提供了和那个BackService基本相同的类——IntentService。因为IntentService和BackService基本相同,所以源码我就不贴了。
先来看一下一个简单的例子:
...
分类:
移动开发 时间:
2015-05-28 16:19:36
阅读次数:
184
(写在前面:文章是看了慕课上的教程之后写的,感谢http://www.imooc.com/learn/377)
一、AsyncTask基本结构介绍
首先,顾名思义,AsyncTask是异步任务。
为什么要异步任务?
因为只有UI线程,即主线程可以对控件进行更新操作。好处是保证UI稳定性,避免多线程对UI同时操作。
同时要把耗时任务放在非主线程中执行,否则会造成阻塞,抛出无响应异常...
分类:
移动开发 时间:
2015-05-27 22:57:00
阅读次数:
201
HandlerThread
在上一篇android耗时任务_handler中介绍了handler的运作机制,并且介绍了一个普通线程中产生looper并使用handler机制通信的简单例子。
我们知道在普通线程中是没有looper的,也就不好在普通线程空间中使用handler机制,如果每次都像上一篇的例子那样做的话就会略显麻烦。其实Android已经封装了
一个拥有自己looper的线程Ha...
分类:
移动开发 时间:
2015-05-27 17:23:06
阅读次数:
276
handler机制的5个角色
在上一篇android处理耗时任务_ANR中简单的介绍了一个handler的用法,现在我们来看看他的基本原理。
Handler:处理者,负责Message的发送及处理。使用Handler时,需要实现handleMessage(Message msg)方法来对特定的Message进行处理,例如更新UI等。
Message:消息,携带要传送的信息和任务,是handl...
分类:
移动开发 时间:
2015-05-27 10:05:30
阅读次数:
151
ANR
有些应用在使用中会弹出一个对话框,一般这个对话框叫做应用程序无响应对话框(ANR:Application Not Responding)。虽然这个提示框有等待和关闭应用程序两种选择,但是它的弹出就已经影响了用户使用app过程中的体验,所以一般来说,Android开发的过程中都会严格控制ANR的出现。
ANR表面原因:应用在一定时间内(一般是5秒)没有响应输入操作(例如输入,按钮,手...
分类:
移动开发 时间:
2015-05-26 16:13:02
阅读次数:
223
原文链接 : Activitys, Threads, & Memory Leaks原文作者 : AlexLockwood译文出自 : 开发技术前线 www.devtf.cn译者 : chaossss校对者: yinna317
状态 : 完成
注:这篇博文涉及的源码可以在 GitHub 上面下载哦
做 Android 开发最常遇到的问题就是在 Activity 的生命周期中协调耗时任务...
分类:
其他好文 时间:
2015-05-11 18:06:30
阅读次数:
219
Service简介:
Service 是Android的四大组件之一,一般用于没有UI界面,长期执行的后台任务,即使程序退出时,后台任务还在执行。比如:音乐播放。
Service的误区:
1.service在UI线程中执行。
2.不可以在service中执行耗时任务,因为service是在UI线程中运行的。
3.如果需要执行后台的耗时任务,必须在Service中开启一个线程来执行...
分类:
移动开发 时间:
2015-05-04 20:12:42
阅读次数:
127
0、准备首先,我们先创建几个耗时任务:public class TestTasks{ //无参、无返回值任务 public void Task1() { Console.WriteLine("task1."); Thread.Sleep(5000); ...