深入理解Activity1

Activity是Android应用中最重要的、最常见的应用组件(此处的组件是粗粒度的系统组件组成部分,并非指桌面控件widget)。(粗粒度就是大局上看的)

创建一个Activity也需要实现一个或多个方法,其实最常见的就是实现onCreate(Bundle  status)方法,该方法将为在Activity创建时被调回。该方法调用Activity的setContentView(View view)方法来显示要展示的View。为了管理应用程序界面中的各组件,调用Activity的findViewById(int id)方法来获取程序界面中的组件。接下来修改组件的属性和方法即可。


配置Activity:

Android中所有应用程序组件必须进行配置。

配置Activity时通常指定如下几个属性:

  • name:该Activity实现类的名称
  • icon:该Activity对应的图标
  • label:该Activity对应的标签
  • exported:指定该Activity是否允许被其他应用程序调用
  • launchMode:指定该Activity的加载模式

启动、关闭Activity

Activity启动其他Activity有如下俩个方法:

  • startActivity(Intent intent):启动其他方法
  • startActivityForResult(Intent intent,int requestCode):以指定的请求码,启动Activity,而且程序将会获得新启动程序的Activity返回的结果(通过重写onActivityResult()方法来实现)。
  • finish():结束当前进程
  • finishActivity(int requestCode):结束以startActivityForResult(Intent intent,int requestCode)方法启动的Activity。

使用Bundle在Activity之间进行交换数据

Activity的回调机制
当开发者开发一个组件时,如果开发者需要该组件能响应特定的事件,则可以有选择的实现该组件的特定方法——当用户在该组件上激活某个事件时,该组件上特定的方法就会回调。
Activity的回调机制也与此类似,随着应用程序的运行,Activity会不断地在不同的状态之间切换,该Activity种特定的方法就会被回调——开发者就可以有选择的重写这些方法来加入业务的相关处理。

Java程序来说,程序架构在某个点上留“ ”,可以以如下两种方式存在:
  • 以接口方式存在:该接口由开发者实现,实现该接口时将会实现该接口的方法,那么通用的程序框架就会调用该方法来完成业务相关的处理。
  • 以抽象类方法(也可以是非抽象方法)的形式存在:这就是Activity的实现形式,在这些特定的点上方法已经被定义了,如onCreate等方法,开发者可以有选择的重写这些方法,通用的程序框架就会回调该方法来完成业务相关处理。
从上面一点,我理解出来了,为什么说Activity类何时被实例化何时被调用其中的方法,并不是开发者所能决定的了。应为编写Android程序,有点像填框架,也就是说,Activity到底做什么,其实在一开始就定义好了,开发者只能控制到时候怎么做,并不能控制什么时候做。

Activity运行过程所处的不同阶段也被称为生命周期,下图能直观说明问题:


Activity的四种加载模式:
  • standard: 标准模式,一调用startActivity()方法就会产生一个新的实例。
  • singleTop: 如果已经有一个实例位于Activity栈的顶部时,就不产生新的实例,而只是调用Activity中的newInstance()方法。如果不位于栈顶,会产生一个新的实例。
  • singleTask: 会在一个新的task中产生这个实例,以后每次调用都会使用这个,不会去产生新的实例了。
  • singleInstance: 这个跟singleTask基本上是一样,只有一个区别:在这个模式下的Activity实例所处的task中,只能有这个activity实例,不能有其他的实例。(简单的说就是创建该实例的时候会创一个新的task来装该Activity)

这些启动模式可以在功能清单文件AndroidManifest.xml中进行设置,中的launchMode属性。


还有很多细节的东西,很多方法没有提到,也没有必要。等实际操作出现问题或者印象深刻的时候再写出来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值