activity简介
activity
是 Android
系统四大应用组件之一,其它三个为 Service
(服务) 、BroadcastReceiver
(广播)、ContentProvider
(内容提供器)。
-
android中一个app的入口是
activity
,一个app至少要有一个activity
,否则该app无法打开。 -
activity
通常是一个单独的窗口。 -
activity
一般通过Intent
通信。
-
所有的组件在使用时都要在Manifest中注册,activity注册方法为:
<activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
其中
intent-filter
为过滤器,其中声明表示了该activity
响应主操作且置于launcher
类别内,即打开app的时候会开启此activity
。<action>
元素指定这是应用的主入口点。<category>
元素指定此activity
应列入系统的应用启动器内,以便用户启动该activity。
生命周期
activity
是向用户展示界面的类,同时所有的用户与手机的交互也大都在这个类里面进行初始化等一系列操作,同时activity
也有不同的状态,可分为以下几类:
onCreate
onStart
onResume
onPause
onStop
onDestroy
onRestart
以下是activity的生命周期流程图。
跳转
-
显示跳转
Intent intent = new Intent(FromActivity.this,ToActivity.class); FromActivity.this.startActivity(intent);
其中
FromActivity
是当前所在activity
,ToActivity
是要跳转到的activity
。 -
隐式跳转
Intent intent = new Intent(); intent.setAction("com.intent.action.LOGIN"); intent.addCategory("com.intent.category.LOGIN"); startActivity(intent);
其中的
action
和category
要与在Manifest
中声明的一致,用于从这些参数映射到相对应的activity
。隐式跳转用于不知道某activity的名称,但知道其指定的action和category的activity,比如在app中打开相机拍照,我们一般使用的时候并不知道负责拍照的activity的名字,所以我们都是使用
int OPEN_CAMERA = 1; Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra("output",uri); startActivityForResult(intent, OPEN_CAMERA);
这段代码的意思就是你告诉系统,你需要调用一个相机,并把从相机中拍到的照片传到uri里面。一个手机里面可能有很多相机
activity
,比如手机自带的相机,或者一些其他什么的相机,这时系统就会弹出一个选择框,选出你要用的相机,同时也有可能某位同学手抖了抖,把手机root之后删掉了系统自带的相机,这时系统就会向你抱怨说,它没有相应的程序来用。由此我们可以看出,使用隐式跳转可以更方便的对手机功能进行扩展,我们只需要写一份筛选性质的代码,让系统把所有符合我们条件的
activity
列出来,我们再在其中选择。