Android
四大组件之Activity
一、Activity
是什么
1、 Activity
就是有界面的Android
程序的基础,比如只要是有界面的android
软件都是由活动在运行。没有活动的程序,你是看不到界面的,看不到的程序,也有他的用处,比如广播,服务等后台就可以运行的
2、
一个含有Activity
的程序,肯定要有一个作为主页面的
3、
活动可以相互调用,包括自身,也包括其他的程序
二、Activity
创建
一个Activity
要使用起码要有两个要素:
1、
继承自活动的源文件
//AppCompatActivity是Activity的一个子类
public class MainActivity extends AppCompatActivity {
@Override
//此函数下面会提到
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//要操作的函数 } }
2、
在清单文件中为源文件声明Activity
android
:name
=".MainActivity"
>
这仅仅是一个activity
的使用,如果想一个有界面的的程序,肯定要一个主页面,这个时候就要
如下:
//
声明属性
//这两个配套使用,程序已启动就启动这个activity
//
如果别的activity有人使用这个,那么排在前面就是主界面
android
:name
="android.intent.action.MAIN"
/>
android
:name
="android.intent.category.LAUNCHER"
/>
3、
为Activity
设置精致的界面
//此句放在onCreate的super的下面//你的界面文件
setContentView(R.layout.activity_main);
三、Activity
启动
1、
显示启动另一个活动
//A代表的是当前的activity名,B代表的是要启动的activity名
Intent i=new Intent(A.this,B.class);
//
启动
startActivity(i)
;
2、
隐式启动(
可以启动别的软件的acitvity)
Action代表的是你要启动的activity的清单属性的action
Intent i=
new
Intent(“action”)
;
startActivity(i)
;
四、Activity
生存周期
在任何周期里,执行了finish();
就直接调用了onDestory()
,activity
直接被销毁了
1、
返回栈
Android
使用堆栈来管理活动,先进后出
如果有2
个页面:A
,B
,
第一种情况:如果A
页面是显示的肯定是位于堆栈的顶部。
第二种情况:此时B
页面被A
页面调用出来,B
页面显示,A
页面消失,B
就在堆栈的顶部,那么A
就在B
的下面
第三种情况:此时B
自毁了,那么只要A
还在堆栈里,A
就在栈顶
2、
活动状态
第一种情况A
对应的是running
第二种情况A
对应的是stopped
第三种情况B
对应的是killed
,A
对应的是Running
3、
回调函数
按照执行顺序
//activity一创建就执行onCreate 我的理解就是相当于构造方法
//如果activity不在堆栈里,就会重新创建
protected void
onCreate
(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState)
;
setContentView(R.layout.
activity_main
)
;
}
//activity
在用户可见状态,但不能被操作,可以做一些初始化操作
//
如果activity在堆栈里则是先执行onStart初始化--->onResume调到栈顶
protected void
onStart
() {
super
.onStart()
;
}
//
当前activity属于运行状态,用户可见可操作
protected void
onResume
() {
super
.onResume()
;
}
//
当前activity被覆盖,就比如放在后台,你可以看见,但是操作不了
protected void
onPause
() {
super
.onPause()
;
}
//
当前activity完全看不到
//
不在栈顶了
protected void
onStop
() {
super
.onStop()
;
}
//
当前activity被销毁了
protected void
onDestroy
() {
super
.onDestroy()
;
}
五、Activity
启动模式
1、 Standard
每次打开一次activity
就创建一个任务到堆栈里,意思就是A
打开B
,B
再打开A(
不是返回)
,此A
非彼A
,两个任务id
不一样,android
默认的启动方式
2、 single Top
会检测该Activity
是否在栈顶,如果在栈顶就复用,如果不是在栈顶就重新创建
3、 single Task
检测是不是在堆栈里,如果在堆栈里,直接把在他上面的都kill
掉
4、 single instance
新建一个堆栈