Activity的传值和生命周期

本文详细解析了Android Activity的使用方法,包括其作用、创建方式、启动过程、生命周期方法及其执行顺序,同时介绍了Activity之间的数据传递机制,包括静态变量、全局变量和Intent的使用,并讨论了日志打印方法。文章还阐述了Activity的生命周期管理和现场保护机制,以及如何处理按键事件、来电事件等。最后,总结了Android应用中Activity的常用操作和注意事项。
Activity的使用:
1 作用
1 影响应用进程(如Back键杀死进程,跳转到新的进程)
2 显示UI控件, 监听UI控件的事件

2 Activity的创建:
1 写一个类继承Activity,重写onCreate
2 设置显示内容: setContentView---静态显示布局文件, 动态添加显示内容
3 清单文件中注册Activity


3 Activity的启动:startActivity(Intent)
Intent: 四大组件的粘合剂
显式的启动: Intent中已经指明了需要跳转的Activity
隐式的启动:Intent中没有指明需要跳转的Activity,交由系统去查询并打开


4  Activity之间的传值:
1 静态变量
2 全局变量Application,生命周期跟App一致, 通过getApplication()可以获取这个单例
如何操作:
1 写一个类继承Application
2 在清单文件中application的标签里面, 通过name属性指向我们自己Application
3 Intent传值:
1 intent.putExtra(String key, (int, boolean, float, String, Object—必须实现Serializable))
  intent.getStringExtra(key)
2 intent.putExtras(Bundle)
3.2.1 Bundle.putString(String, String)  Bundle.putInt(String, int)
3.2.2 intent.putExtras(Bundle)

3.2.3 intent.getExtras()获取Bundle, Bundle.get()

 【注意:“静态变量传值”和“全局变量Application传值”只能实现在同一个应用进程中的值传递,而Intent的两种传值法除了实现同一进程内的传值外,还可实现跨进程间的传值。】【要从A界面   跳转到B界面或者C界面   
这样的话 我就需要写2个Intent  如果你还要涉及的传值的话 你的Intent就要写两遍添加值的方法 那么 如果我用1个Bundle  直接把值先存里边 然后再存到Intent中 就会显得更加简洁


注意:
1 应用中可以有多个相同的intent-filter
2 隐式启动Activity时, 默认会查询的category是android.intent.category.DEFAULT

3 dab:logcat打印日志


Activity的生命周期:
1 从创建到销毁的方法:
onCreate()  创建一个Activity
onRestart() 重启一个已经创建的Activity
onStart() 显式Activity(还没有获取到焦点)
onResume() 获取焦点(用户可以进行交互)
onPause()失去焦点(用户无法进行交互)
onStop() Activity不可见
onDestroy() Activity被销毁



2 生命周期的执行顺序:
启动A  A:onCreate -> A:onStart -> A:onResume
退出A  A:onPause -> A:onStop -> A:onDestroy


//B如果将A完全覆盖掉
A -> B  A:onPause -> B:onCreate -> B:onStart -> B:onResume -> A:onStop
B -> A  B:onPause -> A:onRestart -> A:onStart -> onResume -> B:onStop -> b:onDestroy


//B如果没有将A完全覆盖
A -> B  A:onPause -> B:onCreate -> B:onStart -> B:onResume
B -> A  B:onPause -> A:onResume -> B:onStop -> B:onDestroy


3 现场保护
1 在onSaveInstanceState(Bundle, outState)保存数据, 通过Bundle进行包装
2 在onCreate(Bundle savedInstanceState)中判断savedInstanceState是否为null
3 如果不为null, 则取出保存的数(首次操作该应用时现场保护的值肯定为空)


4 按HOME键的时候,来电的时候的生命周期执行顺序
Activity: onPause -> onStop

5 从B -> A返回值, 

A startActivityForResult(requestCode, Intent)
B setResult(int resultCode, Intent data)
A onActivityResult()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值