Activity的介绍:
每个Activity都相当于一个屏幕,为用户提供了交互的可视界面
应用程序要包含一个或多个Activity,Activity之间的运行是独立的
Activity显示的内容有两种声明方式
1.通过xml文件来配置,我们之前都是通过这种方式
2.将屏幕设置为某个继承自View类的对象
Activity配置:
Activity属性:
name:指定Activity的实现类
icon:指定Activity对应的图标
label:指定该Activity的标题栏
可以指定一个或多个<intent-filter>,该元素用于指定该Activity可响应的Intent
<intent-filter>
<!--决定应用程序最先启动的Activity-->
<actionandroid:name="android.intent.action.MAIN" />
<!--决定应用程序是否显示在程序列表里-->
<categoryandroid:name="android.intent.category.LAUNCHER" />
</intent-filter>
Activity生命周期:
Activity生命周期分为三种生命周期:
1. 前台/活动生命周期 :
OnCreate()->onStart()->onResume()->onPause()->onResume()(比如在一个Activity界面上弹出一个对话框)
2. 可视生命周期 :
OnCreate()->onStart()->onResume()->onPause()->onStop()->onRestart()->onStart()(比如一个Activity可见,按Home键时,再重新重新这个Activity)
3. 全生命周期 :
OnCreate()->onStart()->onResume()->onPause()->onStop()->onDestory()(这是Activity从开始到结束的全周期)
生命周期图:
总结:
由上可知,在Activity中OnCreate()中只调用一次 也就是说这个方法最适合做初始化操作。在Activity很多方法都是在OnCreate()中进行初始化。比如Service 。OnPause和OnResume()这二个方法总是会执行。所以在项目中经常需要重写这二个方法。OnPause()保存数据,OnResume()恢复数据。其余你的生命周期方法根据项目需求编写自己的代码。
Activity保存形式:
在Activity中所有的Activity都放置在栈中。当前台的Activity会放置在栈顶,当点击后退按键 栈顶的这个Activity会被销毁 ,紧接着Activity就会处于栈顶被显示出来
启动的另一种Activity的另一种形式:(startActivityForResult(intent, requestCode))
为了获取被启动的Activity所返回的结构,当前Activity需要重写
onActivityResult(requestCode,resultCode,intent)方法
requestCode是请求码
resultCode代表Activity返回的结果码
一个应用程序在横屏切换成竖屏或者竖屏切换成横屏时,默认的Activity会重新绘制,这样的话那不是所有的数据都 会清空?当然是的。所以 我们一定得避免这种情况。如何解决这个问题呢?
设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次。
设置Activity的android:configChanges="orientation|keyboardHidden"时,不会重新调用各个生命周期,只会执行onConfigurationChanged方法。
个人的一些心得。欢迎同僚们指出问题 大家一起讨论讨论、、、