温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Android基础知识点有哪些

发布时间:2021-11-03 09:43:36 来源:亿速云 阅读:132 作者:iii 栏目:编程语言

本篇内容介绍了“Android基础知识点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

一、Activity

1Activity的四大启动模式和应用场景

1standard

标准模式,每次都会在活动栈中生成一个新的Activity实例。通常我们使用的活动都是标准模式。

2singleTop

栈顶复用,如果Activity实例已经存在栈顶,那么就不会在活动栈中创建新的实例。比较常见的场景就是给通知跳转的Activity设置,因为你肯定不想前台Activity已经是该Activity的情况下,点击通知,又给你再创建一个同样的Activity

3singleTask

栈内复用,如果Activity实例在当前栈中已经存在,就会将当前Activity实例上面的其他Activity实例都移除栈。常见于跳转到主界面。

4singleInstance

单实例模式,创建一个新的任务栈,这个活动实例独自处在这个活动栈中。

二、屏幕适配

1、屏幕适配原理

设备像素px和设备独立像素dp之间的关系px = dp * density

三、Android消息机制

1Android消息机制的四大概念

ThreadLocalMessageQueueLooperHandler

2、过程

1)准备工作

创建Handler,如果是在子线程中创建,还需要调用Looper#prepare(),在Handler的构造函数中,会绑定其中的LooperMessageQueue

2)发送消息

创建消息,使用Handler发送。

3)进入MessageQueue

因为Handler中绑定着消息队列,所以Message很自然的被放进消息队列。

4Looper轮询消息队列

Looper是一个死循环,一直观察有没有新的消息到来,之后从Message取出绑定的Handler,最后调用Handler中的处理逻辑,这一切都发生在Looper循环的线程,这也是Handler能够在指定线程处理任务的原因。

3Looper在主线程中死循环没有卡死界面的原因

导致卡死的是在Ui线程中执行耗时操作导致界面出现掉帧,甚至ANRLooper.loop()这个操作本身不会导致这个情况;Looper会在没有消息的时候阻塞当前线程,释放CPU资源,等到有消息到来的时候,再唤醒主线程;App进程中是需要死循环的,如果循环结束的话,App进程就结束了。

4、介绍IdleHandler

IdleHandler是在Hanlder空闲时处理空闲任务的一种机制。它的执行场景:MessageQueue没有消息,队列为空的时候;MessageQueue属于延迟消息,当前没有消息执行的时候。

四、Bitmap

1Bitmap的内存计算方式

在已知图片的长和宽的像素的情况下,影响内存大小的因素会有资源文件位置和像素点大小。

2、Bitmap的高效加载

Bitmap的高效加载在Glide中也用到了,思路是获取需要的长和宽,一般获取控件的长和宽;设置BitmapFactory.Options中的inJustDecodeBoundstrue,可以帮助我们在不加载进内存的方式获得Bitmap的长和宽;对需要的长和宽和Bitmap的长和宽进行对比,从而获得压缩比例,放入BitmapFactory.Options中的inSampleSize属性;设置BitmapFactory.Options中的inJustDecodeBoundsfalse,将图片加载进内存,进而设置到控件中。

“Android基础知识点有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI