一、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

<span style="font-size:12px;color:#E8BF6A"><activity </span>

<span style="font-size:12px;color:#9876AA">android</span>

<span style="font-size:12px;color:#BABABA">:name</span>

<span style="font-size:12px;color:#6A8759">=".MainActivity"</span>

<span style="font-size:12px;color:#E8BF6A">>


 </activity></span>

这仅仅是一个activity 的使用,如果想一个有界面的的程序,肯定要一个主页面,这个时候就要 如下:

<activity android:name=".MainActivity">

           //

声明属性

     <intent-filter>

           //这两个配套使用,程序已启动就启动这个activity

           //

如果别的activity有人使用这个,那么排在前面就是主界面 

     <action 

android

:name

="android.intent.action.MAIN" 

/>

     <category 

android

:name

="android.intent.category.LAUNCHER" 

/>

 </intent-filter>

 </activity>

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

新建一个堆栈

源码附件已经打包好上传到百度云了,大家自行下载即可~

链接: https://pan.baidu.com/s/14G-b...

提取码: yu27

百度云链接不稳定,随时可能会失效,大家抓紧保存哈。

如果百度云链接失效了的话,请留言告诉我,我看到后会及时更新~

开源地址

码云地址:

http://github.crmeb.net/u/defu

Github 地址:

http://github.crmeb.net/u/defu


CRMEB
162 声望17 粉丝

CRMEB新零售社交电商会员管理营销系统!