android学习日记(1) -- Activity生存周期

1. Android 应用程序可有多个入口 ,而没有main()函数(可在AndroidManifest.xml中指派主Activity); 

2. Intent:

——需要执行的动作(action):常用的动作类型在Intent类中定义,如ACTION_MAIN(用于描述Activity的主要入口), ACTION_EDIT(用于的将Uri 和待编辑数据连接起来);

——需要处理的数据(data):

Intent Action 类型和 Uri 对象可用于指定“动作/数据”对

Intent 也可用于传送数据, Intent 的 Extras 属性存储于Bundle 对象中:

Intent intent  = new Intent(this, MyActivity.class);

intent.putExtra("SomeStringData", "Foo");

intent.putExtra("SomeBooleanData", false);

对这些附加信息的键名需要包含一个包前缀: com.androidbook.Multimedia.SomeStringData。

3. 启动Activity的不同方法:

1) 使用类名运行: startActivity(android.content.Intent intent), 如 startActivity(new Intent(getApplicationContext(), MyDrawActivity.class)), 其中Intent也可用于在Activity间传送数据;

2) 运行其它应用程序的Activity: 如

Uri number = Uri.parse(tel:55551212);

Intent dial = new Intent(Intent.ACTION_DIAL, number);

startActivity(dial);

4. Activity 的生存周期:

1) 同一时间只能有一个活动的Activity处于前台;

2) Android 利用栈来对Activity 进行跟踪,新的Activity启动时,处于栈顶的Activity 会被中断,然后新的Activity 被放入栈顶,当它完成时,原来的Activity 又回到栈顶;

3) 使用Activity回调管理应用程序状态和资源:

_在onCreate()中初始化静态Activity 数据: onCreate(Bundle)在Activity 首次运行时调用(首次调用时Bundle为空,因被killed之后再次调用则传入一个记录先前状态的Bundle对象)

_在onResume()中初始化和接收Activity 数据: 当Activity 到达栈顶时,onResume()方法被调用(onResume()方法非常适合于启动音频、视频和动画);

_在onPause()中停止、保存和释放Activity数据: 当一个新的Activity 被移到栈顶时,当前Activity (须停止)会接收到它被下移的通知,同时onPause()被调用。如 在onPause()中activity 需终止在onResume() 方法中播放所有音频、视频和动画,且还要解除(deactivate)某些资源(避免死锁);

注: onPause()是Activity 在后台最后一次能够有机会进行清理工作、释放无需资源的地方。 一般而言,所有在onResume()中获取的资源和数据均需要在onPause()方法中释放,否则线程被终止时资源不能被很好释放。

_避免Activity对象被销毁: 低内存资源时不处于前台的Activity 可能被销毁,因此其对应的 onStop() 和onDestroy() 都可能不被调用,因此一定要在onPause()方法中尽可能多地释放无用资源,避免被销毁。同时可利用实现Bundle并利用onSaveInstanceState()方法将Activity 在终止时保存至一个Bundle对象中,从而可以在再一次onCreate()时利用已存的Bundle 进行恢复(状态读取会在onStart()中进行);

_在onDestroy()中销毁静态Activity数据: 两种情况下被调用 。 1. Activity自然完成其生存周期;2. 由于资源占用原因被操作系统终止。

4) Activity 间跳转的不同: 

_有一些Activity 可能调用一次后不再显示(如欢迎动画), 即无法利用返回键返回,可用startActivity()方法和适当的finish();

_另一些Activity 则需记录其path, 可用startActivityForResult()和onActivityResult();


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值