1、Activity是Android四大组件(Application Components)之一,
简单来说Activity就是平常所见到的用户界面, 一般情况下,一个Activity所占的窗口是满屏的,但也可以是一个小的位于其它Activity之上的浮动窗口。一个Android工程至少有一个Activity,Activity上面可布有多个view的实例,如文本框、进度条、复选框、按钮等等。多个Activity之间通过Intent来实现跳转。
注:每新建一个activity,就要继承(extends)Activity类,复写onCreate(bundle)方法,然后绑定此activity的布局文件XML
- public class secondactivity extends Activity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- // TODO Auto-generated method stub
- super.onCreate(savedInstanceState);
- setContentView(R.layout.secondactivity);//绑定布局文件
- }
- }
最后还必须在AndroidManifest.xml里面注册这个新增加的activity
- <activity
- android:label="second"
- android:name=".secondactivity" >
- </activity>
2、下面为Activity的继承关系,可见Activity继承与Contex类。
3、Activity的生命周期
其生命周期有如下几种
onCreate()、onRestart()、onStart()、onResume()、onPause()、onStop()、onDestroy()
注:
一般更新activity,要复写onResume(),然后在里面写更新的处理方法。
onpause方法与onstop方法的区别。
如果第二个activity没有完全遮挡住第一个activity时,如第二个activity是对话框形式到时候。就只调用第一个activity的onpause方法。
当第二个对话框完全遮挡住第一个对话框到时候,即第二个Activity是满屏状态,就会调用第一个Activity的onpause和onstop方法。
另外关于onsume方法,只用来获取用户焦点的(其实就是鼠标点击或者拖动之类的),即当前Activity处于激活状态。
- //第一个activity启动第二个activity的顺序
- first activity
- --onpause
- second activity
- --oncreate
- --onstart
- --onresume
- firsr activity
- --onstop//满屏状态
- //--退掉第二个activity的顺序,接上面
- second activity
- --onpause
- first activity
- --onrestart----------------->和oncreate差不多
- --onstart
- --onresume
- second activity
- --onstop
- --ondestroy
4、Activity之间的跳转与intent、Bundle
4.1 intent
类层次结构图:
什么是Intent?
Intent是一个动作的完整描述,包含了动作的产生组件、接收组件和传递的数据信息。可以理解为它是一个信使。当然,也可以将Intent视为一个在不同组件之间仁慈的消息,这个消息在到达接收组件后,接收组件会执行相关的操作。它使得Android系统中互相独立的应用程序组件,成为一个可以互相通信的组件组件集合。因此,无论这些组件是否在同一个应用程序中,Intent 可以将一个组件的数据和动作仁慈给另一个组件
主要常见的用途:1、启动Activity和Service 2、在Android系统上发布广播消息
理解Intent的关键之一是理解清楚Intent的两种基本用法: 一种是显式的Intent,即在构造Intent对象时就指定接收者,这种方式与普通的函数调用类似,只是复用的粒度有所差别;
显示启动:必须指明启动的Activity所在的类 // 创建一个Intent 应用程序上下文 目标组件
另一种是隐式的Intent,即Intent的发送者在构造Intent对象时,并不知道也不关心接收者是谁, 这种方式与函数调用差别比较大,有利于降低发送者和接收者之间的耦合。 另外Intent 除了发送外,还可用于广播(广播当然是隐式intent),这些都将在后文进行详细讲述。 (隐式的intent通过AndroidMainfest.xml中的intent-filter来工作) 是通过Intenet Filter过滤指定。
隐式启动:由Android系统根据Intent的动作和数据来决定启动哪一个Activity,只包含需要执行的动作和所包含的数据,(intent-filter) 无需指明具体哪一个Activity |
4.2 其实Bundle就是一个Map,下面是Bundle的构造方法:
public Bundle() {mMap = new HashMap<String, Object>();
mClassLoader = getClass().getClassLoader();
}
其中一个方法:
public void putCharSequence(String key, CharSequence value) {
unparcel();
mMap.put(key, value);
}
Bunddle主要用来传递参数。