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也有不同的状态,可分为以下几类:
onCreateonStartonResumeonPauseonStoponDestroyonRestart
以下是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列出来,我们再在其中选择。









网友评论