您的位置:首页 > 移动开发 > Android开发

【Android基础笔记05】Activity生命周期以及Activity之间的传值

2017-01-06 11:18 363 查看
一、Activity初步认识:【创建、配置、启动Activity】(一)、创建Activity:创建Activity:继承于Activity或其子类,重写onCreate()方法。(二)、Activity的注册配置:作为四大组件之一的Activity,必须要在AndroidManifest清单文件中进行注册。如果没有配置,而又在程序中启动了该Activity,将抛出异常(ActivityNotFoundException)。注册配置的核心代码:【附加思考】:当在AndroidManifest清单文件中,设置多个页面都是默认启动页,会报错吗?如果不 报错,到底是执行哪个页面呢?当在AndroidManifest清单文件中,如果不设置默认启动页,会报错吗?(三)、启动Activity:在Android应用里各组件之间通信使用Intent。一个Activity通过Intent来表达自己的“意图”。常用有四种方式:          方式一:   第一个参数 上下文对象 第二个参数是需要启动的activity的对象  Intent intent=new Intent(MainActivity.this,OtherActivity.class);  startActivity(intent);                      方式二 : Intent intent=new Intent();   //指定当前的组件名和需要启动的组件名  ComponentName componentName=new ComponentName(MainActivity.this, OtherActivity.class);  intent.setComponent(componentName);  startActivity(intent);   方式三 : Intent intent=new Intent();   intent.setClass(MainActivity.this, OtherActivity.class);  startActivity(intent);                         //方式四 : Intent intent=new Intent();   intent.setClassName(MainActivity.this, OtherActivity.class.getName());  startActivity(intent);     3.常用启动方式有两种:startActivity();startActivityForResult();(四)、Activity之间交换数据:第一种方式:甲页面利用intent对象的putExtra()方法传值,乙页面利用getStringExtra()、getIntExtra()等系列方法来一一接收值;第二种方式:【常用】甲页面利用bundle对象来保存所有需要传递的数值,通过intent的putExtras()方法传值,乙页面利用intent对象的getExtras()方法返回bundle对象,将所有接收的数据放在bundle对象中,利用bundle的get系列方法一一去除数据。        【备注:】如果甲页面使用putExtras()方法传值,则乙页面使用getExtras()接收值。如果甲页面使用putExtra()方法传值,则乙页面要使用getBundleExtra()方法接收值。Activity之间是否可以传递对象呢?【掌握Serializable的用法】Serializable的用法Parcelable的用法1、传递一般数据的核心代码:(1)、MainActivity页面:
(2)、NextActivity页面:
2、传递对象数据的核心代码:(1)、Person对象核心代码:(2)、MainActivity页面:(3)、ReceiverActivity 页面:二、Activity——调用另一个Activity并返回结果:(一)、概念:甲页面调用乙页面,当用户在乙页面完成任务后,程序自动返回到甲页面,而甲页面必须能够获取到用户在完成乙页面后传递的数据结果。(二)、做法:与普通的页面交换数据不同的是,要使用startActivityForResult()方法来启动另一个Activity。(三)、示例代码:1、MainActivity页面:2、ResultActivity 页面:三、Activity——通过Application进行传值:      1.Application 2.,MainActivity3.ResultActivity四、Activity生命周期:(一)、课堂引入:人的生命周期是怎么样的?胎儿婴儿儿童、少年、青年、中年突发变故老年死亡(二)、Activity生命周期:1、Activity一生中有七种不同的状态。onCreate()onStart()onResume()onPause()onStop()onRestart()onDestroy()【备注:】A、七个生命周期组合:onCreate、onStart、onResume:启动应用程序onPause、onStop:失去焦点onRestart、onStart、onResume:重新获得焦点onPause、onStop、onDestroy :退出应用程序B、七个生命周期按阶段划分:onCreate() --- onDestroy()            完整生命周期    The entire lifetimeonStart() --- onStop()                    可见生命周期     The visible lifetime:onResume() --- onPause()            前沿生命周期(焦点生命周期)    The foreground lifetime:2、定义生命周期的作用:①当用户接一个电话或切换到另一个程序不会崩溃②当用户后台运行程序时不会销毁有价值的系统资源③当用户离开再返回你的应用时不会丢失用户的进程④当手机屏幕进行横竖屏切换的时候不会崩溃或者丢掉用户的进程3、完整的生命周期图(三)、实例代码操作:模仿以下操作,观察输出日志,找寻生命周期方法依次回调的规律:打开主界面,后退键退出打开主界面,进入第二个页面打开主界面,模拟电话进入及挂机,再次显示主界面打开主界面,HOME键退出打开主界面,HOME键退出,再次启动app打开主界面,点击该界面中捆绑退出事件的按钮后退出打开主界面,切换横屏竖屏。生命周期执行的顺序:
04-23 03:51:29.750: I/MainActivity(741): ==MainActivity onCreate执行了04-23 03:51:29.759: I/MainActivity(741): ==MainActivity onStart执行了04-23 03:51:29.759: I/MainActivity(741): ==MainActivity onResume执行了04-23 03:52:04.780: I/MainActivity(741): ==MainActivity onPause执行了04-23 03:52:04.791: I/MainActivity(741): ==MainActivity onStop执行了04-23 03:52:04.791: I/MainActivity(741): ==MainActivity onDestroy执行了04-23 03:52:05.200: I/MainActivity(741): ==MainActivity onCreate执行了04-23 03:52:05.209: I/MainActivity(741): ==MainActivity onStart执行了04-23 03:52:05.329: I/MainActivity(741): ==MainActivity onResume执行了
【思考:】两个Activity页面,点第一个中的按钮,进入第二个页面,此时点HOME退出程序。随后再次启动app,依次会执行哪些生命周期的回调方法。如果再点击返回,继续会执行哪些生命周期的回调方法?请自己将依次调用的方法写在下面,不要借助机器调试。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: