1. Android Application Thread 基础
来源:互联网 发布:如何用js实现下拉菜单 编辑:程序博客网 时间:2024/06/06 20:11
Android Application Thread
UI Thread
UI Thread是应用中的主线程,被用于执行Android Component和更新屏幕上的UI。
UI Thread是一个顺序的事件处理线程,它能执行来自平台其他线程发送来的事件。
Binder Thread
Binder Thread被用于不同进程中的线程通信。
Background Thread
应用中显式创建的所有线程都是Background Thread。Background Thread使用UI Thread的后代,因此它们继承了UI Thread的特性。
注:
Stack(栈):存储基本类型和对象的引用;
Heap(堆):存储对象实例。
查看应用进程的信息:
UID:User ID
PID:Process identifier
PPID:Parent process identifier
Android主要有两种方式影响Thread的调度
* Priority(优先级)
改变Linux Thread Priority
* Control Group(控制组)
改变Android特有的control group
设置线程的Priority(优先级)
java.lang.Thread
setPriority(int priority); // 这个方法是平台无关的
基于Java的优先级来设置一个新的优先级值。0(最低优先级) ~ 10(最高优先级)
android.os.Process
Process.setThreadPriority(int priority); // Calling ThreadProcess.setThreadPriority(int threadId, int priority); // Thread with specific id
使用Linux的优先级规则来设置一个新的值。-20(最高) ~ 19(最低)
两种之间的对应关系
Control Group(控制组)
Android中定义了多个控制组,其中应用最重要的是Foreground Group和Background Group。
在Foreground Group中的线程会比Background Group中线程分配到更多的执行时间。
使用命令查看:
Foreground Group
Background Group
把线程设置为Background Group
被Application创建的Thread默认和UI Thread有相同的Priority和Control Group,因此它们会和UI Thread强占资源。
我们可以设置为Background Thread的优先级,来防止这种情况的出现。
使用下面的方法来设置
Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);
- 1. Android Application Thread 基础
- main thread in android application
- Android Application 基础
- Android Application基础
- android 基础 ---> Application
- Android线程例子程序(Thread test application)
- Android应用程序基础(Application Fundamentals)
- Android 应用基础 - Application Fundamentals
- Android基础--简单介绍Application
- Android Application与thread、stack、task、activity之间的关系
- A common thread sync issue analysis of android application
- Android Application与thread、stack、task、activity之间的关
- Android 基础总结:( 十六)Android Thread
- application, process, thread
- [android基础]Service和Thread的区别
- Android基础学习之Thread(线程)
- android 基础 handler message runnable thread looper
- Android 应用程序基础(Application Fundamentals)
- Statement和preparedstatement有什么区别?
- 利用Java调用OpenCV进行人脸识别
- db2jcc4.jar无法获取通过别名查询结果的值?原因何在?!!!
- JAVA定时任务Timer、Spring Task、Quartz
- 如何合并多个*.so库文件
- 1. Android Application Thread 基础
- HDU-2527(建哈夫曼树)
- 1014. 福尔摩斯的约会 (20)
- 仿豆瓣首页弹性滑动控件
- Java NIO系列教程(十一) Pipe
- leetcode 字符串枚举
- 整死你个妖精,CDN西游捉妖记!
- php微信支付(仅pc端扫码支付模式二)详细步骤
- 【剑指Offer】面试题8:旋转数组的最小数字