在深入研究和构建app之前,首先需要了解应用程序是如何工作的,因为我们的手机里面有它,我们用它来完成我们的工作,比如银行业务和联系朋友。但实际上,很少有人确切的知道一个应用程序是如何工作的。
首先要意识到智能手机实际上和其他任何电脑没有什么不同,应用程序只是我们编写的代码,告诉迷你电脑它应该做什么。
Click Me
假设我们有一个应用程序,上面只有一个按钮,当用户点击屏幕的时候,它会说:“Click Me”,然后手机中的传感器会记录点击并向操作系统发送一条消息,然后操作系统会查看从传感器获得的数据,包括手机屏幕上的哪个位置施加了多大的压力,它是否记录了该压力,以及一大堆不同的东西和一大堆数字,但是操作系统会接受所有这些数据,并对其进行解释, 一旦它这样做了,它就会知道这个特定的应用程序屏幕上的这个特定按钮在这个时间点被点击了,然后他会向应用程序发送一条消息,告诉它:嘿,你的这个按钮被点击了,该怎么办?所以你为你的应用程序编写的代码应该指定在这种情况下,当点击名为“Click Me”的按钮时,它应该做什么?它应该会改变屏幕上显示内容,它应该做这个、做那个、、、
因此,作为一名应用开发人员,需要规划所有场景以及应该发生的事情,在每一种情况下几乎有点像紧急规划,如果建筑物着火,应该发生什么事,我们也许应该疏散员工,也许应该关闭所有的门,以防止火灾蔓延。应用程序也是如此。当用户点击此特定按钮时会发生什么?我们应该把屏幕背景改成红色、我们应该展示一些其他信息,然后将等待,看看用户下一步做什么,然后有一个如何应对下一个事件的计划。
Screen、Code、Data
每个应用程序基本上只有三个元素组成,Screen,Code,Data。
- Screen:可以在屏幕上看到的用户界面元素,例如按钮、图像、切换开关和滑块。当我们第一次构建我们的应用程序时,我们将设置屏幕,因此我们将拖动一些按钮,并将其放置在我们认为有意义的位置,然后向屏幕添加图像或其他界面元素。现在当用户与这些元素交互时,比如有人点击按钮,那么我们就有了第二个元素组成--Code
- Code:这个代码可以理解为计划,如果这个叫做“Click Me”的按钮被点击,那么接下来会发生什么?这是第一步这样做,第二部是这样,第三部就这样。但是如果用户使用了滑块,那么在我们的代码中,将有一个部分计划当用户使用滑块时应该发生什么。最后大多数应用程序(尤其是变得更复杂的应用程序)都有存储在应用程序中的数据--Data
- Data:例如我们有一个联系人管理应用程序,其中包含您所有的朋友和同事的电话号码,当用户点击显示A的电话号码的按钮时,屏幕上会显示,然后他们会向代码发送一条消息,我们检查所有这些代码行,看看当用户点击该按钮时,我们应该如何响应,代码将进入数据并获取相关的数据,然后他会把它发送回屏幕,并显示在屏幕上,这样用户就可以看到A的电话号码。
之前提到智能手机就像一台小型电脑,但仍然有一些关键的区别,智能手机不会一直插线充电,我们通常把它放在口袋里,它并不会一直充电,与笔记本电脑相比,它也小了很多,电池消耗的更快,所以手机的处理能力也有所下降,因此,如果你试图在手机上使用一些大型软件,比如最新的《幻兽帕鲁》或者PhotoShop,那么它就无法做到,因为它的内存和处理能力比你的电脑少,因此因为手机在所有这些方面的资源都是有限的,我们必须非常节俭的管理这些资源,比如你不能做一个在五分钟内耗尽用户电量的应用程序,或者做一个对处理能力要求太高的应用程序,因此,在所有智能手机中,总有一个管理者,一个管理所有这些资源的人--操作系统,它会告诉我们的应用程序:“嘿,你现在要出现在屏幕上了,准备好”、“用户想在你这看到点东西”或者“嘿!你的电池消耗太多了!我不得不关闭你”、“来电话了,我先关闭一下你”。
因此,当我们回想在编写应用程序所编写的计划时,该计划必须考虑到所有发生的事情,不仅仅是在应用程序内部的按钮被点击时,或者应用程序打开时、用户摇动手机时,还包括操作系统告诉我们用户正在接电话时,所以我们的应用程序将切换到后台,因此我们也必须提前计划这些情况,如果用户接到一个电话,但他在我们应用程序中填写一个很长的表单,我们肯定不希望他在电话结束后所有的数据都丢失。因此,我们必须计划如何在用户接听电话时保存用户的数据。
总而言之,当我们构建一个应用程序时,我们实际是在编写一个非常长、非常广泛的计划,以计划在许多可能下发送的事情,而当应用程序在手机上运行时,它会看着这个计划,看看它应该做什么。