一、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://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。