android活动程序——Activity,承载着View,很类似于MVC中的Controller。

不得不说,使用Intent(意图)来实现Activity与其他组件(包括其他Activity、Service。Broadcast等)进行交互。是Google的一大创新,也是android的一个亮点,这很好地减少了开发的复杂性。就像一个统一的交互接口一样,或者简单的说,Intent就是一个定义各个组件之间通信的标准。说实话,在学Android的时候我总是喜欢将它与.net的win form开发进行对比学习,并且他们之间也确实存在着诸多共性。但是在各个组件之间的交互上,显然还是android的这种机制来得直观和方便。但是,也许因为开发出的程序的运行模式有所区别,所以才导致了这样的局面。

这里就谈谈在应用程序的两个Intent之间采用Intent进行交互,如果你熟悉activity的生命周期,会知道,从一个activity切换到另一个activity(暂且我们将前一个称之为父activity,后一个称之为子activity)。父activity会执行OnPause()->OnStop(),之后会执行子activity的OnCreate()->OnStart()等等。但是当你按“返回”的时候,你会发现子activity执行了Ondestory()方法,而不是只执行到OnStop(),也就是子activity此时已经被销毁,而下一次你在切换到该类型的activity的时候,又会产生一个新的实例。而返回之后,父activity会执行OnRestart()等。也就是说,父activity的实例一直存在,在返回的时候也不需要再调用OnCreate()。

当你再做一个实验,在上面的子activity里,再切换到一个新的activity。你会发现此时,子activity像上面的父activity一样未被destory。也就是如果一个activity作为另一个activity“源”,那么它的生命周期肯定比它跳转到的activity的生命周期长。那么android到底是怎么做的呢。我们很容易联想到一种数据结构——栈。其实,每次startActivity()都只是把“意图”希望启动的一个activity压入栈顶。这样,就可以实现,栈顶的activity先消亡,其下面的activity在它Pop()之后才会再次Restart。这也很符合程序逻辑。

PS:要想测试activity的lifecycle,只需要重新activity的生命周期会尽量的那些方法(API中有介绍),在方法中启用日志记录功能(Log.i();),记录相关日志即可。

java与.net:

看代码的时候发现java中有这样的语法:类命.this、类名.class。一个是引用类的一个实例,一个是引用该类的Class类型的对象(在.net中应该对应的是类型的定义,也就是元数据)。类名.class都是Class类型,class与Class不是同一个类型,这种用法通常在反射中。好吧,这和.net中的Type很相似。可能是先入为主吧,我始终还是觉得称为Type更为合理,一个类型的“原型”本来在英文中用“Type”来表示。并且Class给人的感觉,总是和class相混淆。

上次看到一个面试题:.net中class是什么类型?坑爹啊!是类类型吗?引用类型吗?尼玛就是C#的关键字!这题考Java程序员,是什么效果?应该会比.net程序员好~




更多相关文章

  1. android属性动画
  2. Android开发易错点总结
  3. Android中AsyncTask的简单用法
  4. Android(安卓)计时器Timer用法
  5. android中延迟执行某个任务
  6. Android(安卓)驱动之旅: 第二章 -- 在Android(安卓)系统中增加C
  7. Android(安卓)App卡顿慢优化之多线程优化
  8. Android卡顿自动化检测实现
  9. 《疯狂Android讲义》学习笔记一

随机推荐

  1. 为 Centos7 配置 .htaccess 开启 URL 伪
  2. 盘点|2021年最受欢迎Linux桌面操作系统前
  3. 为 ECS Ubuntu 18.04 实例配置辅助私网 I
  4. MongoDB 4.2 内核解析 - Change Stream
  5. 插画人物如何构图?插画构图的正确方式
  6. thinkphp5 生成二维码
  7. JS返回上一页
  8. PHP几种常见的时间间隔信息获取
  9. 根据身*份*证信息获取年龄
  10. TP5.1+layui实现栏目数的调用