01-初识安卓


它山之石,可以攻玉。
本人以VS和C#熟悉者视角总结安卓开发知识。

AndroidStudio

项目视图

与VS的解决方案视图类似,AS也有项目视图用于显示项目的结构。默认应该在窗口左边。
不同的是,它可以在几种显示模式中切换。Android模式时是以一种逻辑分类显示资源,不代表真实的文件层级。切换为Project模式才是真实的文件目录结构。

gradle

个人认为是一个包管理和构建工具。
较现代的项目管理方式都存在包管理的概念。像旧的C++或C#项目都是手动下载库和添加引用。而现在都使用各种包管理工具来下载库和配置引用。这样我们只需要维护包依赖的配置,而不用操心在哪里下载、如何配置。
构建工具,就是处理哪些文件需要编译、哪些资产需要包含、哪些库需要参与编译。。。以及执行构建。

各种xml

安卓开发中存在大量的xml声明式资产。声明式,就是把xml声明与实际的类、属性、资源等做一个映射。并且安卓框架内部可以在某个功能时间点解析对应的xml声明。

R类

R是一个静态类,它的特殊之处在于它是由开发工具动态更新的、用于为可查找的资产生成一个唯一的id。
res目录中的xml、图片等等都在R类里有一个对应的id。xml中的某些元素也可以注册一个id。这一切都是开发工具自动完成的,我们并不会去修改R类。
可以笼统的认为,可查找对象都以键值对的形式内部存储着。

四大模块

Activity、Service、BroadcastReceiver、ContentProvider
活动,可以认为PC的一个exe。系统管理着它们之间的调用栈关系。
服务,这个很好理解,PC也有服务。
广播接收和内容提供还不知道。

Activity

xml声明界面布局,Activity对应的类写界面控制逻辑。
活动可通过startActivity方法启动,Intent对象来查找和传递数据。
活动需要在AndroidManifest.xml中登记才能使用,还可以配置IntentFilter来声明它可以响应的Intent类型。

活动是被系统全局管理的,因此可以启动其它应用中的Activity。这种感觉就是安卓系统中的所有活动是平等关系的,互相可访问的。因此上面我说活动可以认为PC的一个exe,而不是一个窗口。

一个重要方法:findViewById
通过R类中的id就可以找到布局中对应的元素。

java lambda表达式。这个对于C#开发者不可不用。
(参数序列)->{语句}
和C#差不多,只是=>变成了->
稍有遗憾,没有var关键字的类型推断。

回调也是一个值得关注的点,Activity本身很多工作都围绕着界面的建立,这些大量依靠回调来填充具体逻辑。
ctrl+o可打开可重载方法列表,似乎不能筛选,有点可惜。

ctrl+鼠标左键可跳转到定义。

阶段性心得

安卓开发给我最深的印象就是xml声明、IDE、运行时库之前构成了一个有机的整体。
因此才有编写xml时的语法提示、声明之间的文本替换或资源映射、R类的动态维护、运行时的基于id查找。
这表明安卓框架本身是一个在抽象层级上很高,规范很多的框架。

posted @ 2022-05-29 22:19  啊循  阅读(32)  评论(0编辑  收藏  举报