Handler mHandler;
private void createManualThreadWithHandler() {
new Thread() {
@Override
public void run() {
super.run();
Looper.prepare();
mHandler = new Handler(Looper.myLooper());
Looper.loop();
}
}.start();
}
Android为了简化Handler
的创建过程提供了一个便捷的类,使用它我们可以快速的创建一个带有Looper
的线程,有了Looper
这个线程,我们就可以生成Handler
。
// Step 1: 创建并启动HandlerThread线程,内部包含Looper
HandlerThread handlerThread = new HandlerThread(“lingdage”);
handlerThread.start();
// Step 2: 创建Handler
Handler handler = new Handler(handlerThread.getLooper());
// Step 3: 发送消息
handler.post(new Runnable() {
@Override
public void run() {
System.out.println(“thread id=”+Thread.currentThread().getId());
}
});
创建HandlerThread对象
public HandlerThread(String name) {
super(name);
//HandlerThread的默认优先级是Process.THREAD_PRIORITY_DEFAULT,具体值为0。
mPriority = Process.THREAD_PRIORITY_DEFAULT;
}
public HandlerThread(String name, int priority) {
super(name);
mPriority = priority;
}
线程的优先级的取值范围为-20到19。优先级高的获得的CPU资源更多,反之则越少。-20代表优先级最高,19最低。0位于中间位置,但是作为工作线程的HandlerThread
没有必要设置这么高的优先级,因而需要我们降低其优先级。注意!是Process里的优先级而不是Thread的。
可控制的优先级
-
THREAD_PRIORITY_DEFAULT
,默认的线程优先级,值为0。 -
THREAD_PRIORITY_LOWEST
,最低的线程级别,值为19。 -
THREAD_PRIORITY_BACKGROUND
后台线程建议设置这个优先级,值为10。 -
THREAD_PRIORITY_MORE_FAVORABLE
相对THREAD_PRIORITY_DEFAULT
稍微优先,值为-1。 -
THREAD_PRIORITY_LESS_FAVORABLE
相对THREAD_PRIORITY_DEFAULT
稍微落后一些,值为1。
以上的这些优先级都是可以在程序中设置的,除此之外还有不可控的优先级均有系统进行自动调整。
常见的加入优先级的方法如下
Runnable run = new Runnable() {
@Override
public void run() {
android.os.Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);
}
};
关于Android中线程的调度详情,请参考剖析Android中进程与线程调度之nice
获取Looper
/**
- This method returns the Looper associated with this thread. If this thread not been started
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
要如何成为Android架构师?
搭建自己的知识框架,全面提升自己的技术体系,并且往底层源码方向深入钻研。
大多数技术人喜欢用思维脑图来构建自己的知识体系,一目了然。这里给大家分享一份大厂主流的Android架构师技术体系,可以用来搭建自己的知识框架,或者查漏补缺;
对应这份技术大纲,我也整理了一套Android高级架构师完整系列的视频教程,主要针对3-5年Android开发经验以上,需要往高级架构师层次学习提升的同学,在这里点击GitHub免费分享,希望能帮你突破瓶颈,跳槽进大厂;
最后我必须强调几点:
1.搭建知识框架可不是说你整理好要学习的知识顺序,然后看一遍理解了能复制粘贴就够了,大多都是需要你自己读懂源码和原理,能自己手写出来的。
2.学习的时候你一定要多看多练几遍,把知识才吃透,还要记笔记,这些很重要! 最后你达到什么水平取决你消化了多少知识
3.最终你的知识框架应该是一个完善的,兼顾广度和深度的技术体系。然后经过多次项目实战积累经验,你才能达到高级架构师的层次。
你只需要按照在这个大的框架去填充自己,年薪40W一定不是终点,技术无止境
说你整理好要学习的知识顺序,然后看一遍理解了能复制粘贴就够了,大多都是需要你自己读懂源码和原理,能自己手写出来的。
2.学习的时候你一定要多看多练几遍,把知识才吃透,还要记笔记,这些很重要! 最后你达到什么水平取决你消化了多少知识
3.最终你的知识框架应该是一个完善的,兼顾广度和深度的技术体系。然后经过多次项目实战积累经验,你才能达到高级架构师的层次。
你只需要按照在这个大的框架去填充自己,年薪40W一定不是终点,技术无止境