Android实现异步的几种方法
来源:互联网 发布:怎么查看当前linux版本 编辑:程序博客网 时间:2024/05/18 00:51
在Android项目中,有经验的开发人员都知道,一些耗时的IO操作等都必须在子线程中去操作,那么可以有哪些方法来开启子线程呢,一般可以使用Java中自带的几种方法,也可以使用Andorid特有的一些类。
用Java来实现异步
主要有两种方法来实现异步,继承Thread类和实现Runnable接口
1.继承Thread类
先上代码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
MyThread继承自Thread类,重写run()方法,在run()方法中写上子线程需要执行的任务就可以了。然后在测试的main()方法中new MyThread()。再调用start()方法。这样就完成了使用继承Thread,来实现子线程从创建到执行的整个过程。
2.实现Runnable接口
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
MyThreadRunnable实现Runnable接口,并且在run()方法中实现自己的任务,这跟前面的很类似,只是后面要开启线程的时候不仅需要new MyThreadRunnable()而且还需要new Thread()并且把前面的对象传入,再通过Thread调用start()方法来启动线程。
上面的方法来开启子线程,还可以用静态内部类来实现,这样代码看起来会更加简洁。
- 1
- 2
- 3
- 4
- 5
- 6
从代码层面来看,继承Thread看起来更加方便,但是java是单继承的,在实际生产中,一般都需要某个类,所以实现Runnable的用法会多一点。
使用Android特有的方法来实现异步
1.AsyncTask
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
MyAsyncTask基础自AsyncTask,三个泛型分别为,String:是传入参数类型,可以传多个,Integer:是进度显示的参数类型,也可以传多个,Bitmap:是任务执行完的返回类型,这里就是返回一个Bitmap。
使用AsyncTask来实现异步的有点就是简单便捷,各个过程都有明确的回调,过程可控。但是缺点就是要是执行多个异步,就会变得很复杂。
2.Handler
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
上面就是最简单的使用Handler完成子线程和主线程的通信(子线程发消息给主线程)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
上面是主线程发消息给子线程,也是比较类似的,只不过在子线程中,需要初始化Looper.prepare()和Looper.loop()。
RxJava
这个比较新,学习路线比较陡峭,但是一旦入门,使用起来真的很爽。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
这里是最简单的使用了RxJava,来实现异步操作。RxJava还有更多更强大的功能等你去发现。
- Android实现异步的几种方法
- Android实现异步的几种方法
- Android实现异步的几种方法
- Android实现异步的几种方法
- android异步更新UI的几种方法
- android异步更新UI的几种方法
- Android异步机制的几种实现方式剖析
- Android实现滑动的几种方法
- Android实现定时器的几种方法
- Android 实现倒计时的几种方法
- 异步调用js的几种方法
- js异步请求的几种方法
- android异步的几种方式
- android异步的几种方式
- android异步的几种方式
- android 中异步线程的实现方法
- .net ajax 异步调用的几种实现方法(jquery)
- Android中使用异步线程更新UI视图的几种方法
- Oracle知识原理详解
- [知了堂学习笔记]_JavaScript之typeof运算符
- DBUtils
- map_set
- Spring与Redis的整合
- Android实现异步的几种方法
- 3-6 静态数据成员与静态成员函数
- VS2010出现重复的代码项原因及解决方式
- 便利宝商家APP官方版V2.3.0下载 | 银盒子便利宝商家版下载
- Logrotate日志切割报错 文件不再同一个用户组下
- [知了堂学习笔记] javascript 内置对象
- Kubernetes学习之 Hadoop cluster in Kubernetes
- JSP-动作指令
- Word embedding中 句向量模型PV-DM(句向量的分布记忆模型)与PV-DBOW(句向量的分布词袋):