Activity的总结(一)
来源:互联网 发布:挚爱梵高 知乎 编辑:程序博客网 时间:2024/06/05 04:29
Activity是Android四大组件之一,简单总结一下Activity组件。
一.Activity含义
Activity 是一个应用组件,用户可与其提供的屏幕进行交互,以执行拨打电话、拍摄照片、发送电子邮件或查看地图等操作。 每个 Activity 都会获得一个用于绘制其用户界面的窗口。窗口通常会充满屏幕,但也可小于屏幕并浮动在其他窗口之上。
二.Activity的状态
三.Activity的创建和启动
1.Activity的创建
在manifest中注册Activity:
必须在清单文件中声明,系统才能访问这个Activity。
<activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity>
其中在”intent-filter”中加上
<action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" />
表明此Activitiy是主Activity,程序启动先显示此界面。
创建Activity:
必须创建 Activity 的子类(或使用其现有子类),需要在子类中实现 Activity 在其生命周期的各种状态之间转变时系统调用的回调方法。
public class MainActivity extends Activity { private static final String TAG = "MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.i(TAG, "onCreate: "); } ......}
2.启动Activity
Activity通过Intent来实现在应用程序的Activity间启动、停止和传输。
以在MainActivity上启动SecondActivity为例:
(1).显示启动:
Intent intent = new Intent(this, SecondActivity.class);startActivity(intent);
(2)隐式启动:
在清单文件中设置intent-filter的action和category、data等:
<activity android:name=".SecondActivity"> <intent-filter> <action android:name="action_to_secondActivity"/> <category android:name="android.intent.category.DEFAULT"/>/> </intent-filter> </activity>
跳转时调用:
Intent intent = new Intent(this, SecondActivity.class);startActivity(intent);
四.Activity生命周期
特别说明:
onPause()、onStop() 和 onDestroy()三种方法返回后可以终止进程。如果系统在紧急情况下必须恢复内存,可能不会调用 onStop() 和 onDestroy()。所以onPause()成为结束进程前最后调用的方法。
因此使用 onPause() 向存储设备写入至关重要的持久性数据。
五.几种情况下生命周期方法调用
1.启动Activity:
onCreate()->onStart()->onResume();
2.按back键返回到主屏:
onPause()->onStop()->onDestroy();
3.当前Activity创建完成后,按Home键回到主屏:
onPause()->onStop();
4.点击Home键回到主界面后:
onRestart()->onStart()->onResume();
5.从当前Activity跳转到新的Activity:
原Activity的onPause()->新Activity的onCreate()->新Activity的onStart()->新Activity的onResume()->原Activity的onStop();
此时如果新Activity设置为透明主题(
android:theme=”@android:style/Theme.Translucent” )则日志为:
最后原Activity的onStop()不会执行。
6.在新Activity页面点击Back键返回到原来Activity时:
新Activity的onPause()->原Activity的onRestart()->原Activity的onStart()->原Activity的onResume()->新Activity的onStop()->新Activity的onDestroy();
当新Activity设置为透明主题,日志为:
由于5时不执行onStop(),故此时不会执行onRestart()和onStart()。
六.Activity的onSaveInstanceState和onRestoreInstanceState方法
onSaveInstanceState和onRestoreInstanceState方法不是生命周期中的方法,不一定被触发。
onSaveInstanceState方法:当应用遇到意外情况(如:内存不足、用户直接按Home键)由系统销毁一个Activity时,onSaveInstanceState() 会被调用。一般在onStop方法之前。
onRestoreInstanceState方法:只有在Activity真的被系统非正常杀死过,恢复显示Activity的时候,会调用onRestoreInstanceState。一般在onResume方法之前。
说明:通常onSaveInstanceState()只适合用于保存一些临时性的状态,而onPause()适合用于数据的持久化保存。
- Activity的总结(一)
- 新手入门级的Activity总结(一)
- 一个Activity的显示过程总结(一)
- Activity的生命周期一
- Activity的生命周期一
- 一、Activity的生命周期
- Activity的生命周期(一)
- Activity的回顾(一)
- Activity的launchMode总结
- android的activity总结
- activity的task总结
- Activity的生命周期总结
- activity的总结
- Activity的总结
- Activity生命周期的总结
- Activity的总结
- Activity的总结(二)
- (一)Activity与Intent传值总结
- 【jQuery源码浅析】(五)--文档加载--$.ready
- iOS的runtime获取类的属性的数据类型
- 翻滚的TextView
- myeclipse打开软件出现Building workspace’has encountered a problem.Error occurred during the build。错误
- 007_内核对象的Signal状态
- Activity的总结(一)
- 供SAPI中TTS功能用使的Win8.1语言包安装
- TokenSearchManager API
- 让APK只包含指定的ABI
- 查询数据库中带有某个字段的所有表名
- jQuery实现表单提交时判断的方法
- php抽奖实现
- Python-rabbitmq实例
- Mysql跨表更新,删除 多表update,delete