android学习日记(1) -- Activity生存周期
2011-11-17 14:55
239 查看
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();
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();
相关文章推荐
- Android学习日记——INTENT
- android学习日记:SharedPreferences的使用
- android学习日记03--常用控件button/imagebutton
- android学习日记(六):ViewPager详解下
- Android学习日记--Java练习题
- Android学习日记(yzy):显示application并调用
- 8.28 Android学习日记
- 【Android学习日记】(三) 常用方法
- android学习日记26--AIDL之进程间的通信
- android学习日记:转屏中的activity的生命周期
- android学习日记01-搭配开发环境
- Android学习日记(yzy):Service的两种启动
- android学习日记03--常用控件Dialog
- Android学习日记(2)
- 学习日记--android显示动态GIF文件代码
- android学习日记——Intent与IntentFilter
- 【Android学习日记】(四) 菜单使用例子
- 【转】android学习日记01--综述
- Android学习日记——数据存储5部曲之SharedPreferences
- Android学习日记(5)