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 官方架构组件 ViewModel
  2. Android Design Support Library最新组件
  3. Android 的生命周期基础知识
  4. [译] Android应用程序基础 >> 应用程序的组件(Application Compon
  5. Android 虚拟机Dalvik、Android各种java包功能、Android相关文件
  6. 《Android Dev Guide》系列教程6:Android生命周期之activity生命
  7. Android系列教程之六:TextView小组件的使用--附带超链接和跑马灯
  8. 应用组件-应用程序介绍
  9. Android 利用addView 动态给Activity添加View组件

随机推荐

  1. 更改Android(安卓)Studio的主题背景
  2. OpenCV4Android(安卓)之 OpenCV4Android(
  3. Android(安卓)无线连接WiFi打印机打印图
  4. android编程如何让程序后台运行
  5. Android(安卓)Studio 我的快捷键
  6. Android(安卓)SQLite增删改查的语句
  7. Android知识点总结
  8. 【AS环境】mac上配置adb环境
  9. Android(安卓)弹性布局 FlexboxLayout了
  10. android中 jar包 方法数统计