Android基础-1.Activity篇章

一.Activity生命周期

1.activity的4种状态

     running(处于activity栈顶的状态,活动状态)/paused(失去焦点,被一个非全屏的activity占据,用户操作屏幕,没反应)/stopped(这个Activity被另外一个完全覆盖,这个被覆盖的处于这个状态,是不可见的)/killed(被系统回收)

2.activity生命周期的分析

activity启动的时候,——》onCreate()——》onStart()——》onResume()

点击Home键回到主界面(Activityb不可见的时候)--->onPause()---->onStop()

当我们再次回到原Activity界面时候---->onRestart()-->onStart()---->onResume()

退出当前Activitys时候 --->onPause()---->onStop()--->onDestory()


  • (1) onCreate():表示Activity 正在创建,这是生命周期的第一个方法,可以做一些初始化操作,比如调用setContentView加载布局,初始化Acitivity所需的数据等。
  • (2) onRestart():表示Activity 正在重新启动。当前Acitivity从不可见重新变为可见状态时会调用onRestart方法。比如按Home键切换到桌面或者打开一个新的Activity,当前Actyvity就会暂停,也就onPause和onStop被执行,再回到这个Activity就会出现这种情况。
  • (3) onStart():表示Activity正在被启动,已经可见,但还没有出现在前台,还无法和用户交互。
  • (4) onResume():表示Activity已经可见了,并且在前台开始活动。注意:onStart和onResume都表示Activity已经可见,但是onStart的时候Activity还在后台,onResume的时候Activity才显示到前台。
  • (5) onPause():表示Activity 正在停止,正常情况下,紧接着onStop就会被调用。此时可以做一些存储数据、停止动画等操作,不能太耗时,否则会影响新的Activity的显示,onPause必须先执行完,新Activity的onResume才会执行。
  • (6)onStop:表示Activity***即将停止*,可以做一些稍微重量级的回收工作,同样不能太耗时。
  • (7)onDestroy:表示Activity即将被销毁,这是Activity生命周期的最后一个回调,可以做一些回收和最终的资源释放。 

3.android进程优先级

前台/可见/服务/后台/空

4.android 任务栈

  • (1) android任务栈又称为Task,它是一个栈结构,具有后进先出的特性,用于存放我们的Activity组件。 
  • (2) 我们每次打开一个新的Activity或者退出当前Activity都会在一个称为任务栈的结构中添加或者减少一个Activity组件,因此一个任务栈包含了一个activity的集合, android系统可以通过Task有序地管理每个activity,并决定哪个Activity与用户进行交互:只有在任务栈栈顶的activity才可以跟用户进行交互。 
  • (3)在我们退出应用程序时,必须把所有的任务栈中所有的activity清除出栈时,任务栈才会被销毁。当然任务栈也可以移动到后台, 并且保留了每一个activity的状态. 可以有序的给用户列出它们的任务, 同时也不会丢失Activity的状态信息。
  • (4)需要注意的是,一个App中可能不止一个任务栈,某些特殊情况下,单独一个Actvity可以独享一个任务栈。还有一点就是一个Task中的Actvity可以来自不同的App,同一个App的Activity也可能不在一个Task中。  

5.Activity启动模式

standard

默认模式,可以不用写配置。在这个模式下,都会默认创建一个新的实例。因此,在这种模式下,可以有多个相同的实例,也允许多个相同Activity叠加。

例如:
若我有一个Activity名为A1, 上面有一个按钮可跳转到A1。那么如果我点击按钮,便会新启一个Activity A1叠在刚才的A1之上,再点击,又会再新启一个在它之上……
点back键会依照栈顺序依次退出。

singleTop

可以有多个实例,但是不允许多个相同Activity叠加。即,如果Activity在栈顶的时候,启动相同的Activity,不会创建新的实例,而会调用其onNewIntent方法。

 singleTask
只有一个实例。在同一个应用程序中启动他的时候,若Activity不存在,则会在当前task创建一个新的实例,若存在,则会把task中在其之上的其它Activity destory掉并调用它的onNewIntent方法。
如果是在别的应用程序中启动它,则会新建一个task,并在该task中启动这个Activity,singleTask允许别的Activity与其在一个task中共存,也就是说,如果我在这个singleTask的实例中再打开新的Activity,这个新的Activity还是会在singleTask的实例的task中。

singleInstance

只有一个实例,并且这个实例独立运行在一个task中,这个task只有这个实例,不允许有别的Activity存在。


6.schemet跳转协议

Android中的Scheme是一种页面内跳转协议,通过自定义Scheme协议,可以跳转到app中的任何页面。

  • 服务器可以定制化跳转app页面
  • app可以通过Scheme跳转到另一个app页面
  • 可以通过h5页面跳转app原生页面

协议格式

 Uri.parse("qh://test:8080/goods?goodsId=8897&name=fuck")
  • qh代表Scheme协议名称
  • test代表Scheme作用的地址域
  • 8080代表改路径的端口号
  • /goods代表的是指定页面(路径)
  • goodsId和name代表传递的两个参数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值