目录
14.怎么多渠道打包;分渠道不打包某些第三方包(比如在华为手机应用市场的apk不打包小米推送的jar包)
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.布局优化。
- 使用工具检测(Hierarchy Viewer);
- 使用include 和merge标签减少复用布局而产生的布局嵌套,使用ViewStub懒加载减少渲染元素;
- 诊断过度绘制,优化过度绘制
4. 懒加载有什么缺点。
- ViewStub对象只可以Inflate一次;
- ViewStub不支持merge
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互