1.什么是Activity
官方文档是这么说的:An Activity
is an application component that provides a screen with which
users can interact in order to do something, such as dial the phone, take a photo, send an email, or
view a map. Each activity is given a window in which to draw its user interface. The window
typically fills the screen, but may be smaller than the screen and float on top of other
windows.
大致意思是说:Activity是一个应用程序组件,给用户提供一个屏幕让用户可以与之交互做一些事
情。
2.Activity的生命周期
下面这张图是官方文档提供的Activity的生命周期的图:
·onCreate 方法 当Activity启动的是调用
·onDestroy方法 当Activity销毁的时候调用
·onStart 方法 当Activity可见的时候调用
·onStop 方法 当Activity
不可见的时候调用
·onResume 方法 当Activity上的按钮 获得焦点 可以被点击的时候调用
·onPause 方法 当Activity 上的按钮 失去焦点 按钮不可以被点击的时候调用
·onRestart 方法 当界面被重新加载的时候调用
注意这个方法
■手机按键对应的Activity生命周期的回调方法
如果点击BACK键,会调用Activity的onPause()、onStop()、onDestroy()方法,Activity
会注销掉。
如果点击HOME键,会调用Activity的onPause()、onStop()方法,但不会执行onDestroy() 方法,程序会运行在后台。如果应用程序没有被系统杀死,那么再点击应用程序图标会调用Activity的onRestart()、onStart()、OnResume()方法。
■特殊的回调方法组合
如果打开第一个Activity之后,不关闭它,开启另外一个Activity(非透明的),会调用第一个Activity的onPause()、onStop()方法。
如果打开第一个Activity之后,不关闭它,开启另外一个Activity(透明的),会调用第一个
Activity的onPause()方法,而不会去调用onStop()方法,因为第一个Activity还是可见的。如果关
闭透明的Activity,第一个Activity只会回调onResume()方法。
3.Activity的清单配置
如果想让Activity成为应用程序的入口,需要将activity的意图过滤器配置如下:
<intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter>
Android允许程序有多个activity作为应用程序的入口,只要activity配置了以上的意图过滤器,就会在手机桌面上创建多个应用程序图标,点击图标会进入对应的activity界面。
如果activity节点没有设置自己的label和icon,会默认使用application节点的label和icon。
4.Activity的页面跳转及数据传递
■启动Activity传数据和取数据
本Activity:传数据,通过Intent对象的setData()和putExtra()方法封装数据至Intent对象。
被调用的的Activity:取数据,通过Activity类的getIntent()方法先得到开启这个Activity的
Intent对象,也就是本Activity里传数据用到的Intent对象,然后通过
Intent对象的getXxxExtra()方法得到数据。
■启动Activity的2种方式
第一种:不需要被启动的Activity返回数据
startActivity(intent);
第二种:需要被启动的Activity返回数据
startActivityForResult(intent, int类型的请求码);
对于第二种Activity的启动方式,需要思考的两个问题?
1)被调用的Activity怎么返回数据?
首先,调用者Activity启动被调用的Activity的方式是
startActivityForResult(intent, int类型的请求码);
其次,在被调用的Activity里面,创建Intent对象,将要返回的数据封装进Intent对
象,调用Activity类的setResult(int resultCode, Intent data)方法返回Intent对象。
如:
//将数据返回 Intent intent = new Intent(); intent.putExtra("phone", phone); setResult(10, intent);
2)调用者Activity怎么获取被调用的Activity所返回的数据?