Activity基础
# 应用程序初步的启动流程
当尝试启动一个Android应用程序时:
- 系统解析
AndroidManifest.xml
文件,舱室检索到入口Activity - 运行入口Activity程序,调用
onCreat()
方法,执行setContentView 方法,关联到相关的布局文件,完成界面的初始化
# MainActivity
普通类继承Activity类,具备了窗口特性;
【Activity运行机制】
程序运行后打开界面,执行
onCreate()
创建视图通过
setContentView()
方法设置内容视图,通过R.layout.activity_main
十六进制的索引,反向寻找资源文件夹res下对应的布局文件layout中activity_main.xml
,将布局文件加载到当前界面中
public class MainActivity extends AppCompatActivity {
// Activity-可视化界面
// public class XxxActivity extends Activity { }
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 设置内容视图
setContentView(R.layout.activity_main); // int layoutResID
}
}
2
3
4
5
6
7
8
9
10
11
R文件作用 : 为每一个资源文件按类别
分配索引,使程序可通过R.类别名.资源名
操作对应的资源
操作布局资源
// 通过R.layout索引将 activity_main.xml 布局通过setContentView()设置到 MainActivity上
setContentView(R.layout.activity_main);
2
# AndroidManifests
manifests-清单文件 当创建了多个Activity时,我们需要在AndroidManifest.xml
中指定它们的执行顺序。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.iqqcode.uibasic">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.UIBasic">
<activity android:name=".MainActivity">
<intent-filter>
<!--指定启动main界面,该入口只能有一个-->
<action android:name="android.intent.action.MAIN" />
<!--生成当前app的icons,点击图标进入应用-->
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Android设备运行Android应用程序时,首先是读取AndroidManifest.xml
文件下的启动程序MAIN
activity,进入到对应的启动界面,执行onCreate()
方法,通过setContentView()
加载布局效果
对于其他Activity:
- 创建Activity
- 指定布局文件
- 将此Activity配置到AndroidManifest中
# 关闭Activity
关闭当前Activity
- 当调用
finish()
方法时,Activity的onDestroy()
方法会被回调 - 当Activity被关闭时,如果它是通过startActivityForResult()方法激活的,则启动源(激活它的Activity)的onActivityResult方法会被回调
关闭相关联的Activity
finishActivity()关闭Activity
public void finishAcitvity(int requestCode)
该方法并不用于关闭自身,而是关,通过startActivityForResult()激活的Activity,由于startActivityForResult()激活的Activity可能有多个,所以能被该方法关闭的Activity也可以有多个,finishActivity()的参数即为调用startActivityForResult()时的参数requestCode。
如果requestCode可以匹配多个Activity,则这些Activity将全部被关闭。
关闭当前应用中所有的Activity
定义一个应用程序级别的全局变量,使用集合类型记录下每个启动过的Activity,当需要全部关闭时,遍历该集合逐一关闭即可。