android的应用类app开发通常只涉及到android sdk为大家提供的四大组件,activity、service、broadcast receiver和Content Provider。只需要在activity完成对窗口的逻辑控制,辅以layout的ui窗口设计,就可以完成用户交互的ui窗口部分,再加上service完成后台逻辑运行部分,以及broadcast receiver完成广播接收部分,content provider(或者sqlite)完成数据存储部分。一个普通的android app就基本完成了整体设计。
涉及到游戏开发,开发者会发现android sdk实际上和其他系统开发类sdk一样,为用户提供了更加底层的开发接口。例如在游戏中,单一窗口要呈现的内容往往带有动画的特点。例如植物大战僵尸中,主游戏界面上必须要有僵尸、植物这两个元素。首先,这两个元素都不是通用的ui组件,是bmp图片展示的两个小人,专业名称叫精灵。这两个精灵会移动,这也是游戏的一大特色,就是在地图之上会有很多移动的元素。这样就涉及到的在android界面上绘图的问题,或者说是让已绘好的bmp图片移动的问题。
而谈到界面中图形在变化或者频繁变动位置,或者有很多精灵,每个都有自己的随机性的动作,这就涉及到一个问题,是不是所有的逻辑都要在activity里处理。而activity我们必须看清楚,他只是一个android sdk提供给开发者的高层封装,他把view给封装了起来,目的是为了方便ui设计与逻辑代码编写的方便性。
实际上,一个android程序跑起来,仍然是一个单独运行的进程。一个 Android 程序开始运行时,就有一个主线程Main Thread被创建。该线程主要负责UI界面
的显示、更新和控件交互,所以又叫UI Thread。由于只有UI线程更新界面所以说Android是单线程模型。随之而来的概念是“android的单线程模型”,简单的说就是
当应用启动,系统会创建一个主线程(main thread)。这个主线程负责向UI组件分发事件(包括绘制事件),也是在这个主线程里,应用和Android的UI