安卓多线程复习

本文章及子文章参考众多文档,及引用文档中的内容,感谢被引用的原作者们。

参考文档:

https://developer.android.google.cn/guide/components/processes-and-threads

https://www.jianshu.com/p/91552325f5a5

https://www.cnblogs.com/panhouye/p/6494753.html

https://blog.youkuaiyun.com/cshichao/article/details/8787357

启动一个app后,系统会启动一个linux进程(process),此进程包含一个线程(thread),成为UI线程(UI Thread)或主线程(Main Thread),通常一个app的所有组件都在此线程中运行,除非想做点其他的事情,那可以在AndroidManifest.xml通过android:process属性修改指定组件的进程。

进程可以全局设置,谷歌api原话如下:

此外,<application>元素还支持 android:process 属性,用来设置适用于所有组件的默认值。

当内存不足,而其他更急于为用户提供服务的进程又需要内存时,Android 可能会决定在某一时刻关闭某个进程。正因如此,系统会销毁在被终止进程中运行的应用组件。当这些组件需再次运行时,系统将为其重启进程。

决定终止哪个进程时,Android 系统会权衡其对用户的相对重要性。例如,相较于托管可见 Activity 的进程而言,系统更有可能关闭托管屏幕上不再可见的 Activity 的进程。因此,是否终止某个进程的决定取决于该进程中所运行组件的状态。

但是往往不可能一个进程里跑完全部的操作,而且主线程又不是线程安全型的,像一些耗时的操作(如网络请求数据),放在主线程进行操作,容易阻塞主线程,造成ANR(Application Not Response)问题。

安卓提供了几种多线程操作方式来帮助app进行耗时操作

1,Handler

https://blog.youkuaiyun.com/u014436704/article/details/114021498

2,AsyncTask

https://blog.youkuaiyun.com/u014436704/article/details/114266352

3,HandlerThread+IntentService

https://blog.youkuaiyun.com/u014436704/article/details/114305478

4,Thread

https://blog.youkuaiyun.com/u014436704/article/details/114579057

5,ThreadPoolExecutor

https://blog.youkuaiyun.com/u014436704/article/details/114604864

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值