学习笔记之Android篇——Activity(2.0)

之前整理过的Activity有点乱,在补充一些!

Activity的生命周期图:

1)onCreate:在这个方法中可以做一些初始化工作,如调用setContentView去加载界面布局和资源,初始化Activity所需的数据;

2)onRestart:重新启动Activity;

3)onSart:活动由不可见变为可见时调用;

4)onResume:出现在前台并开始活动;

5)onPause:在系统准备去启动或恢复另一个活动的时候调用;

6)onStop:在活动完全不可见的时候调用;

7)onDestroy:在活动销毁之前被调用;

PS:

1)onStart和onResume都表示Activity已经可见,但Onstart的时候Activity还在后台,onResume的时候Activity才显示到前台;

2)onStart和onStop是从Activity是否可见这个角度来回调的,onResume和onPause是从Activity是否位于前台这个角度来回调的;

3)旧的Activity先onPause,新的Activity在启动,因此不能在onPause中做重量级的操作;

典型情况下的生命周期分析:

onCreate----->(onRestart)------>onStart------->onResume------->onPause------->onStop------>onDestroy  

异常情况下的生命周期分析:

1)横竖屏切换的生命周期

onPause---->onSaveInstanceState--->onStop---->onDestroy---->onCreate--->onStart---->onRestoreInstanceState--->onResume

Ps:可以通过在AndroidManifest文件的Activity中指定如下属性:

Android:configChanges=“orientation|screenSize”来避免横竖屏切换时,Activity的销毁和重建,而是回调了onConfigurationChanged方法。

四种启动模式的应用场景:

stardard(标准模式):每启动一次Activity,就会创建一个新的Activity实例并置于栈顶。

应用:绝大多数的Activity

singleTop(栈顶复用模式):如果需要新建的Activity位于任务栈栈顶,那么此Activity的实例就不会重建,而是重用栈顶的实例。并回调onNewIntent方法。

应用: 在通知栏点击收到的通知,然后需要启动一个Activity,这个Activity就可以用singleTop,否则每次点击都会新建一个Activity。

singleTask(栈内复用模式):该模式是一种单例模式,即一个栈内只有一个该Activity实例。

应用:大多数App的主页

singleInstance(单例模式):打开该Activity时,直接创建一个新的任务栈,并创建该Activity实例放入新栈中。一旦该模式的Activity实例已经存在于某个栈中,任何应用再激活该Activity时都会重用该栈中的实例。

应用:呼叫来电界面(???)

Activity的Flags

ps: 通过Intent的addFlags()方法设置

1)FLAG_ACTIVITY_NEW_TASK:singleTask模式

2 ) FLAG_ACTIVITY_SINGLE_TOP:singleTop模式

3 ) FLAG_ACTIVITY_CLEAR_TOP:具有此标记位的Activity,当它启动时,在同一个任务栈中所有位于它上面的Activity都要出栈。如果和singleTask模式一起出现,若被启动的Activity已经存在栈中,则清除其之上的Activity,并调用该Activity的onNewIntent方法。如果被启动的Activity采用standard模式,那么该Activity连同之上的所有Activity出栈,然后创建新的Activity实例并压入栈中。

+

 

 

 

 

 

 

 

 

 

 

 

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值