组件化封装思想实战Android APP总结一

241 篇文章 5 订阅

1、fragment的切换有多少种方式,有区别吗?

真正意义上有三种。

①remove()-->add()和replace()②hide()与show()③detach()与detach()

单独执行remove()再执行add()方法与直接执行replace()方法是同一种方式

replace():相当于先remove(),再add()。如果栈中是空的,则相当于什么也没有remove()掉,只执行了add()。也就是说,它始终让栈中只有一个fragment,栈中其它的fragment也会被移除掉。意思是其它的fragment实例会被回收。该方法每次都会新建fragment实例。

hide()与show()只会将原来的fragment隐藏掉,而将新的fragment添加到栈中。它是一种比较消耗内存的处理方式,但是却是最常用的一种方式,因为不会销毁fragment。但是当应用越来越大的时候,也不会多消耗多少内存。

attach()与detach()几乎不会用到。当调用方法detach()的时候,它不会销毁fragment,但是会将fragment中的view销毁掉。而attach()会为重新构建刚才销毁view的fragment中的view。比较鸡肋是因为它没有省多少内存,因为fragment并没有被销毁,只把view销毁了。内存没有省多少,但是却导致每次都要重新构建view,所以在实际开发中并不常用。

 

 

2、只要我们创建出了activity一定要在mainfest中声明吗?

 

3、activity有几种启动模式,你能熟练的知道他们各自的使用场景吗?

四种。Standard:默认的启动模式

SingleTop:要创建的activity已经处于栈顶时,复用此Activity

 

SingleTask:要创建的activity已经处于栈中时,弹出此Activity上的其它activity,让其处于栈顶

SingleInstance:全局单例模式,即只要整个系统中创建过此Activity的实例,不再创建

 

首先,假设栈中有三个activity。最下面是AActivity,中间是BActivity,最上面是CActivity,它处于用户的面前。假如此时点击CActivity中的按钮,它要再次跳转到CActivity,如果没有为CActivity设置特殊的启动模式,那么它默认的就是标准模式,这时它会又创建一个CActivity的实例,压入栈中,此时栈中就会出现两个CActivity。如果为CActivity设置了SingleTop模式的话,再创建CActivity的实例的时候,就会先遍历这个栈,看栈顶是不是CActivity,如果是,则复用这个CActivity,不再创建CActivity,如果不是的话才会去创建新的Activity。这就是SingleTop模式,也就是说要创建的activity已经处于栈顶,则复用此activity,否则的话和standard的启动模式是一样的。

singletask模式:还是假设在CActivity中有一个按钮,点击按钮后会创建AActivity,假设没有给AActivity设置启动模式的话,会再创建一个AActivity的实例压入栈中,但是如果为AActivity设置了SingleTask模式,那么再点击按钮后,会将CActivity、BActivity都弹出去销毁,此时AActivity就呈现在用户面前了。

singleInstance:就是一个全局的单例模式,只要这个activity被任何一个应用创建过,就再也不会创建第二个activity。这个常用于系统的activity,比如launcher、锁屏界面等等,这些界面只要有一个就够了。而自己开发的应用通常是不会用到singleInstance的。

 

 

4、实际开发中,对各种文件的命名有没有什么规范?

包的命名:首先创建activity包、application包、fragment包,这三个包分别存放activity、程序入口application,还有fragment,在实际开发中,类一定要严格地放在对应的包中,这样十分方便我们去查找。

类的命名:(HomeActivity)activity一定是以activity结尾,(ImoocApplication)application一定是以application结尾,(HomeFragment)而fragment一定是以fragment结尾的。这样一来寻找起来方便,二来,非常方便我们分模块来存放这些类。

布局的命名规范:

activity的布局:(activity_home_layout)首先是以activity开头,如果是布局,结尾一定是layout,中间呢就是以业务来命名,比如,这个是homeactivity的布局,中间就以home来命名它。

fragment的布局:(fragment_home_layout)fragment的开头一定以fragment开头,结尾因为是布局文件一定以layout结尾,中间也以业务来命名。

adapter中加载的view的布局:adapter中数据的命名方式,(item_product_card_two_layout),以item开头,以layout结尾。一看是item就可以知道布局用于adapter中的item中,中间以业务逻辑来命名

item的xml中view的命名规范:xml中view的属性都要用小写字母加下划线来命名,源码中就是这样来命名的

 

 

使用场景:

standard:默认的

singleTop:在我们的应用中需要重复启动这个activity,来减少activity的创建,来节省内存

sigletask:保证我们的应用开启后,只有一个activity的实例,这个模式常用的场景是home页,通常情况下homeactivity就是singletask模式

sigleinstance:主要是系统级的一些应用会用到

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值