一、什么是Acitivity
Activities是一个程序的组件之一。它的主要功能是提供界面。
一个程序一般由多个Activity组成,各Activity之间关系很松散,它们之间没有直接的关联。必须有一个Activity被指定为主Activity,它是程序启动时首先显示的界面。每个Activity都可以随意启动其它的Activity。每当一个Activity被启动,则前一个Activity就被停止。一个程序中的所有启动的Activity都被放在一个栈中,所以被停止的Activity并没有销毁,而在存于栈中。新启动的Activity先被存放于栈中,然后获得输入焦点。在当前活动的Activity上点返回键,它被从栈中取出,然后销毁,然后上一个Activity被恢复。
当一个Activity因为新的Activity启动而被停止时,它会收到状态变化的通知,这样的变化有多个,每个都会引起系统调用一个相应的回调方法以通知Activity,这些回调方法被统称为“生命周期回调方法”。这些回调方法分别在Activity被创建、停止、恢复、销毁时被调用。
二、如何创建Activity
1、创建一个Activity类的子类。
2、在清单文件AndroidMainfest的application标签中注册此Acitivity
例、
<activityandroid:name="com.example.myfirstapp.MainActivity"></activity>
如果我们要把新建的Activity作为程序的入口时,那么我们就要在此Acitivity的标签中加入一个intent-fileter标签
例、
<activityandroid:name="com.example.myfirstapp.MainActivity">
<intent-filter>
<actionname="android.intent.action.MAIN"/>
<category name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
android.intent.action.MAIN是说明此Acitivity是程序的入口,android.intent.category.LAUNCHER表示此入口为系统图标或快捷方式启动。
三、为Acitivity添加布局
在res/layout下创建一个xml格式的布局文件,并选定它拥有的布局方式(四种布局方式LinearLayout,RelativeLayout,AbsoluteLayout,FrameLayout,TableLayout)。
然后根据自己的意愿来添加控件(按钮、文本框、输入框等)。
四、从一个Activity启动到另一个Activity
创建一个Intent并指明要从哪个Acitivity跳转到哪个Activity,然后利用startActivity的方法来实现此跳转。
例、
Intent intent_toSecondActivity = new Intent(MainActivity.this,SecondActivity.class);
startActivity(intent_toSave);
这样就可以实现由MainAcitivity跳转到SecondActivity。
有时,你可能想从你启动的activity获得其执行后返回的结果。那么我们可以使用startActivityForResult()来启动新的Activity(不再使用startActivity),然后,你的程序还需要定义回调方法onActivityResult()。当新的Activity运行结束时,他把一个intent返回给你的程序,这个intent是在onActivityResult()中被接收的。
例、要实现从MainActivity启动到SecondActivity,返回时使MainActivity刷新数据
MainActivity部分代码:
Public void startScendActivity(){
Intent intent = new Intent(MainActivity.this,SecondActivity.this);
startActivityForResult(intent,1);
}
@Override
protectedvoid onActivityResult(int requestCode, int resultCode, Intent data) {
//
super.onActivityResult(requestCode,resultCode, data);
//判断请求码
if(requestCode== 1){
//判断结果码
if(resultCode== 2){
//刷新数据
refreshView();
}
}
}
SecondActivity部分代码:
<span style="font-size:10px;">SetResult(2);
Finish();</span>
五、Activity的生命周期
Activity共7个基本的生命周期(onCreate、onStart、onResume、onPause、onStop、onDestroy、onRestart)。
onCreate: Activity被创建的时候,做一些数据的初始化工作。
onStart:界面被创建的时候, onStart方法执行完毕后,我们就可以在屏幕上看到界面,此时为用户可见不可操作的状态。
onResume :onResume方法执行完毕后,我们就可以通过屏幕对Activity进行操作了
onPause :Activity被部分遮盖时,变为用户可见但不可操作的状态。
onStop :Activity被完全被遮盖,或退到后台。
onDestroy:这是Activity被kill前最后一个被调用方法了,可能是其他类调用finish方法或者是系统为了节省空间将它结束掉。
onRestart :从onStop状态回到运行状态,需要执行的第一个生命周期。
在一个Activity正常启动过程中,这些方法调用的顺序是onCreate -> onStart -> onResume;在Activity被kill掉的时候方法顺序是onPause -> onStop -> onDestroy,此为一个完整的生命周期。那么对于中断处理(比如电话来了),则是onPause -> onStop,恢复时onRestart->onStart -> onResume;如果当前应用程序的是一个Theme为Translucent(半透明)或者Dialog的Activity那么中断就是onPause ,恢复的时候onResume。