android 知识整理

1.activity

四种转台:

running:处于activity栈顶的状态

pause:失去焦点,失去和用户交互能力,但是可见

stopped:被另一个覆盖activity完全覆盖,不可见

killed:被销毁状态

生命周期:

启动时:oncreat-onstart(用户可见,不可交互)-onresume(前台可见)

点击home键返回:onpause-onstop

再次回到app:onrestart(由不可见状态到可见状态)-onstart-onresume

退出activity:onpasuse-onstop-ondestory

进程优先级:前台进程(用户正在交互的activity)》可见进程(可见 不在前台)》服务进程》后  台进程》空进程

任务栈(task)

一个task包含 一个activity集合;一个activity中可能不只一个task

启动模式

standard:每次启动一个activity ,就重新启动一个activity实例,加载到task中,不判定是否重复,每次创建一个activity都会重新完全走一遍声明周期;

singletop:栈顶复用,判断task中栈顶有没有,有的话 复用,没有 就新创建。

singletask:栈内复用,检测整个任务栈中 是否有activity, 若检测到,则将那个activity放到栈顶,将其他的全部移除。

singleintance:activity独享任务栈。整个任务栈中有且只有一个实例。

scheme跳转协议

页面内的跳转实例,在app中内部跳转到各页面。应用场景:根据服务的下发的url,跳转到指定页面。

2.fragement

fragement加载方式:

1.静态加载

  2.动态加载

 

https://www.jianshu.com/p/dfdb838012c3

 fragementpageradapter 和fragementstatepageradapter区别:前者适用于页面较少的情况,后者用于页面较多的情况。在fragementstatepageradapter中 释放了内存。

fragement 声明周期,必须加载到avtivity才能使用

启动-展现”onattach(fragement与activity关联之后)-oncreate(只是创建了fragement,activity没有创建完)-oncreateview(首次绘制界面调用)-onviewcreate(fragement界面已经被绘制好了)-oncreate(activity)-onactivitycreated()-onstart(activity)-onstart()-onresume(activity)-onresume()

回退:onpause()-onpause(activity)-onstop()-onstop(activity)-ondestoryview()-ondestory()-ondetech()-ondestory(activity)

fragement 通信

1.在fragement中调用activity中的方法:getactivity

2.在activity中调用fragement中的方法:接口回调

3.在fragement中调用fragement中的方法:先getactivity-然后再获取另一个findfragementbyid

fragement的方法:replace 替换fragement实例,add 把fragement实例加到activity的上层,remove 从activity中删除fragement实例

service:

应用场景:和boardcast一样都运行在主线程中,都不能做耗时操作。

service和thread区别:service运行在主线程上。activity难以控制后台thread。

开启service的方式:

startservice: 一旦启动,服务就在后台无限制运行,即使activity销毁,service仍然运行,直到手动销毁。

bindservice:绑定service和activity一起。绑定取消后,service自动被销毁,不需要手动销毁。

service保活;

broadcast:

应用场景:

同一个app具有多个进程的不同组件之间的消息通信

不同app的组件之间的通信

广播总类:

1.normal broadcast:context.sendbroadcast

2.system broadcast:context.sendorderedbroadcast

3.local broadcast:只在自身app内传播

广播实现- receive

1.静态注册 注册完成就一直运行

2.动态注册 跟随activity的生命周期

内部实现机制:

1.自定义广播接收者broadcastreceiver,并复写 onrecvice()方法;

2.通过binder机制向 AMS进行注册

3.广播发送者通过binder机制向AMS发送广播

4.AMS查找符合相应条件的broadcastreceiver,将广播发送到相应的队列

5.详细循环执行拿到此广播,回调broadcastreceiver中的onreceiver方法

localbroadcastmanager:只在自身app内传播

binder:

handler:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值