activity、fragment、service、broadcastreceiver

一、Activity

1、

activity、fragment、service、broadcastreceiver_第1张图片

2、

activity、fragment、service、broadcastreceiver_第2张图片

3、

activity、fragment、service、broadcastreceiver_第3张图片

4、


activity、fragment、service、broadcastreceiver_第4张图片

5、栈:后进先出。完全清空任务栈后,才能退出程序。如果任务栈中有activity,必须安全保存

activity、fragment、service、broadcastreceiver_第5张图片

6、

activity、fragment、service、broadcastreceiver_第6张图片

7、

activity、fragment、service、broadcastreceiver_第7张图片

二、fragment

1、fragment为什么会被称为第五大组件

Android四大组件:Activity、广播、service、contentprovider,在实际项目中,fragment使用频率和作用很突出。有了生命周期,fragment就可以像activity一样灵活处理,但是并不是像activity一样独立,必须加载到activity当中,依附于activity

2、实际开发中,用的的是第二种方式

fragment相对于activity更节省内存,与ui的切换效果也更加地舒适,

activity、fragment、service、broadcastreceiver_第8张图片

3、

activity、fragment、service、broadcastreceiver_第9张图片

4、

activity、fragment、service、broadcastreceiver_第10张图片

fragmentpageradapter适用于页面较少的情况,fragmentstatepageradapter在每次viewpager切换页面的时候是回收内存的,适用于页面较多的情况


从源码的角度来看:

FragmentStatePagerAdapter:在destroyItem方法中可以看到调用的是remove(fragment)方法,是真正地释放内存

activity、fragment、service、broadcastreceiver_第11张图片


fragmentPagerAdapter的源码:在destroy方法中,调用的是detach方法,只是将activity的ui和fragment的ui所脱离开来,并不回收内存

activity、fragment、service、broadcastreceiver_第12张图片

5、

activity、fragment、service、broadcastreceiver_第13张图片


activity、fragment、service、broadcastreceiver_第14张图片

6、

在fragment中创建一个接口,由activity来实现,这样就能实现由activity调用fragment中的方法

activity、fragment、service、broadcastreceiver_第15张图片


7、ragment的replace、add、remove方法

add:将一个fragment添加到activity最上层

remove:将一个fragment从activity的fragment队列中删除

replace:将一个fragment替换为所要显示的fragment

三、service

1、

activity、fragment、service、broadcastreceiver_第16张图片

在后台处理耗时的逻辑,或处理长时间处理的任务。当程序退出的时候,仍然可以让service运行。service里面不能做耗时操作,耗时操作是在service中开了线程。

2、Service和Thread的区别

很多耗时操作,你可以开启一个子线程来完成,thread是程序执行的最小单元线程,可以用它来执行很多异步操作。

service是Android的一种机制,当它运行的时候,如果是本地的service,那么它对应的service是运行在主线程上,不能做耗时操作。

也就是thread运行是相对独立的,而service的运行是依托于它所运行的主线程上,相较于thread,service并不是那么独立。

在Android当中,线程一般指的是工作线程,也就是后台线程,也就是做一些耗时操作的线程,而主线程是一种特殊的工作线程,它只是负责处理一些ui线程的绘制,UI线程中绝对不能做耗时的操作,service也是运行在主线程,不能做耗时操作。

如果一定要在service中进行耗时操作,一定要开启线程。需要长时间在后台运行,但又不需要与用户进行操作的情况下,需要使用service。

3、startservice启动服务

activity、fragment、service、broadcastreceiver_第17张图片

如果在activity等中通过startservice开启服务,一旦服务开启,将无限期在后台运行。即使activity销毁了,服务也不受影响,除非手动关闭service,service才会停止。

4、bindservice

绑定服务的时候,activity与服务进行了绑定,如果activity和service在不同的进程,也可以进行通讯,当activity被销毁时,service也会被销毁

activity、fragment、service、broadcastreceiver_第18张图片

5、

6、

四、

五、


你可能感兴趣的:(Android)