Android学习之Activity深入

本文详细探讨了Android中Activity的生命周期,包括正常和异常情况下生命周期的变化,并介绍了五种实现Activity过渡动画的方法,如overridePendingTransition、style定义、ActivityOptions等,强调了不同方法的应用场景和效果。
摘要由CSDN通过智能技术生成

activitiy中打开一个Aactivitiy,Aactivitiy会走以下生命周期
onCreate–》onStart–》onResume–》A运行–》发出打开B的intent–》AonPause–》B可见–》AonStop,此时B经历同样的生命周期,
等B结束,A再度可见,onRestart–》onStart–》onResume

注意:AonPause之后B可见,为了不影响B界面的显示,这里最好不要在A的onPause中做耗时操作,耗时操作可以在onPause中操作,因为此时B已经可见。

一,异常情况下的生命周期

1,资源相关的系统配置发生改变
比如横竖屏切换,系统资源配置发生了改变,activity会被摧毁并重新创建,因为是异常终止,activity会使用saveInstanceState方法来保存状态,这个方法在onStop之前,与onPause没有时序关系,当activitiy重建时,系统会把saveInstanceState保存下来的Bundle对象传递给onRestoreInstanceState和onCreate方法,

2,系统内存不足导致低优先级activity被杀死
activity优先级
1,处于前台与用户交互的activitiy优先级最高,
2,可见但非前台居中,比如弹出的dialog或者显示的progress使activity无法与用户交互,但此时activity仍然可见
3,位于后台失去焦点,此时activity处于onStop状态,优先级最低。
当系统资源不足时,会优先杀死优先级低的activity,由于是异常终止,系统会调用saveInstanceSate和onRestoreInstanceState两个方法来保存和恢复数据

二,Activity过渡的五中实现
1.使用overridePendingTransition方法实现Activity跳转动画
overridePendingTransition方法是Activity中提供的Activity跳转动画方法,通过该方法可以实现Activity跳转时的动画效果
比如:
Intent intent =newIntent(MainActivity.this, SecondActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.slide_in_left, R.anim.slide_in_left);
这个函数有两个参数,一个参数是第一个activity进入时的动画,另外一个参数则是第二个activity退出时的动画。

这里需要特别说明的是,关于overridePendingTransition这个函数,有两点需要主意
1>.它必需紧挨着startActivity()或者finish()函数之后调用”
2>.它只在android2.0以及以上版本上适用

2、使用style的方式定义Activity的切换动画
(1)定义Application的theme给主题定义style

<application 
Android:allowBackup="true"
Android:icon="@mipmap/ic_launcher" 
Android:label="@string/app_name" 
Android:supportsRtl="true" 
Android:theme="@style/AppTheme">

(2)定义具体的AppTheme样式
其中这里的windowAnimationStyle就是我们定义Activity切换动画的style。而@anim/slide_in_top就是我们定义的动画文件,也就是说通过为Appliation设置style,然后为windowAnimationStyle设置动画文件就可以全局的为Activity的跳转配置动画效果。

<!-- Base application theme. --> 
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
 <!-- Customize your theme here. --> 
<item name="colorPrimary">@color/colorPrimary</item>
<
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值