| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> Android面试题 -> 正文阅读 |
|
[移动开发]Android面试题 |
1. Android四大组件及使用。Activity :应用程序中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。 BroadcastReceive广播接收器:应用可以使用它对外部事件进行过滤只对感兴趣的外部事件(如当电话呼入时,或者数据网络可用时)进行接收并做出响应。广播接收器没有用户界面。然而,它们可以启动一个activity或serice 来响应它们收到的信息,或者用NotificationManager 来通知用户。通知可以用很多种方式来吸引用户的注意力──闪动背灯、震动、播放声音等。一般来说是在状态栏上放一个持久的图标,用户可以打开它并获取消息。 Service 服务:一个Service 是一段长生命周期的,没有用户界面的程序,可以用来开发如监控类程序。 Content Provider内容提供者 :android平台提供了Content Provider使一个应用程序的指定数据集提供给其他应用程序。这些数据可以存储在文件系统中、在一个SQLite数据库、或以任何其他合理的方式。 2. 屏幕适配,常用方案。Android屏幕适配的发展 ??1、dp直接适配 ??2、宽高限定符适配 ??3、UI适配框架Autolayout 目前最好的适配方案 ??1、SmallestWidth适配(sw限定符适配) ??2、今日头条适配方案 ??3、AutoSize 3.布局优化。
4. 懒加载有什么缺点。
5. MVC、MVP、MVVM区别。MVC的特点 它将数据、视图、控制分开,实现了松耦合。 View将事件传递到Controller中 Controller完成想要业务后改变Model状态 Model更新View MVC的优点 实现了解耦合,修改其中一层时,不用修改另外两层代码 可维护性高,松耦合也就意味着维护起来更加方便 重用性高 MVC的缺点 由于控件的数据绑定都需要在Activity中完成,Activity/Fragment在View与Controller的定义中有点模糊。 伴随着业务的增加,Controller容易变得臃肿。 MVP的特点 View接受事件,传递给Presenter Presenter做逻辑处理,修改Model Model通知Presenter数据变化,Presenter更新View MVP的优点 将Model与View完全分隔,提高了可扩展性。 便于测试。在测试Presenter时,只要实现View的接口并注入到Presenter就可以测试Presenter的业务逻辑。 MVP的缺点 与MVC一样,P层起到的控制功能伴随着业务的增多,也会变得臃肿。 Presneter需要持有View的引用,同时View也需要持有Presenter的引用,控制上存在一定复杂度。 MVVM的特点 View接受事件,转交给ViewModel ViewModel操作Model更新数据 Model更新后通知ViewModel,ViewModel更新View数据 MVVM的优点 低耦合。由于ViewModel的存在,View可以独立于Model变化与修改;同理,Model也可以独立于View变化与修改。 可重用性。一个ViewModel可被多个View重复绑定,实现同一组业务。 ViewModel中解决了MVP中V-P互相持有引用的问题,使得结构更清晰,简洁 MVVM的缺点 ViewModel持有Model的依赖。 数据绑定方式使得bug难以确定是在View中还是在Model中。 6.Glide加载大图原理,如何防止内存溢出。清单文件可以增大系统分配给APP的最大内存,默认大概60M。 Android:尽量不要使用setImageBitmap或setImageResource或BitmapFactory.decodeResource来设置一张大图, 因为这些函数在完成decode后,最终都是通过java层的createBitmap来完成的,需要消耗更多内存。 因此,改用先通过BitmapFactory.decodeStream方法,创建出一个bitmap,再将其设为ImageView的 source, Glide:在加载图片的时候,不要缓存资源,如果可以获取控件尺寸的话,可以控制加载的尺寸; .skipMemoryCache(true) //禁止Glide内存缓存 .diskCacheStrategy(DiskCacheStrategy.NONE) //不缓存资源 7.内存优化。常见的内存泄漏:
实践:
8.WebView和H5页面优化
应用程序缓存(简称 AppCache) 为 web 应用的离线访问提供了支持,其原理是基于 manifest 属性和 manifest 文件。manifest 缓存会一直保存,直到缓存被清除,manifest 文件被修改,或浏览器更新 AppCache。
|
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 1:08:49- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |