在app的开发中,主要涉及的就是页面交互和功能,而安卓开发中,为了实现这几个功能,主要有四大组件和其它的一些功能模块。
页面除了布局的xml文件之外,主要的载体就在activity中,和页面有关的逻辑都在activity组件中实现。比如,点击事件的调用逻辑,获取输入框的输入内容,获取后端数据并显示等。都是通过activity来实现的。
安卓开发中的service和web开发中的后端service是不一样的,后端开发中的service主要用来是实现业务逻辑,而安卓中的service是后台服务,因为一些app的功能需要在后台执行,所以有了service的存在。
比如,在音乐播放的app中,如果用activity组件实现,那么在离开这个页面的时候,音乐就无法播放;而在service中实现,那么即使你离开了这个app,它依然会在后台继续执行。
安卓中的service有两种,第一种是单独的service,需要使用startService启动;而另一种service是和activity绑定的,当activity关闭的时候,会解绑service,并进行销毁;这就是生命周期的不同。
fragment是一种在一个页面进行显示切换的一种组件,如果没有fragment,那么所有的页面切换操作都要使用activity来实现,这样会导致执行效率低下。
比如目前很多app在最下面有多个菜单按钮,比如抖音有首页,朋友,我等菜单;如果用activity实现,那么没点击一个菜单就要跳转到一个activity中,这时页面切换到流畅度就可能会有问题。
而使用fragment之后,只需要在同一个activity中,就可以通过切换不同的fragment组件来实现显示内容的切换。
receiver是广播组件,用来在app中实现一些广播与通知;比如,抖音有朋友发布新视频,支付宝有账单通知等,都是通过广播组件来实现的。
广播有静态广播和动态广播,还有系统广播和用户自定义广播等。
安卓开发中的数据共享组件,其为数据的读取和存储提供了统一的接口。
app中需要存储一些用户数据,比如记录登陆状态,用户访问的当前状态等;比如,抖音在没有退出app的情况下,记录用户当前浏览的页面视频数据等。
安卓中的数据存储形式主要有三种,sp,sqlite,room;
sp属于文件存储,使用的是xml文件格式;而sqlite和room数据数据库存储,它们是一种嵌入式的,小巧却功能强大的数据系统。
intent是用来在activity,service中进行数据通讯的一种方式,比如activity跳转另一个activity,但是需要携带一些数据,那么就要用到intent类。
第三方sdk
安卓开发中,虽然官方提供了大量的sdk工具,但有些功能需要使用到第三方的sdk,比如地图或者一些其它定制功能;因为自己开发一款app ,不可能自己在建立一个地图数据的采集公司,所以只能使用第三方的地图数据,那么就要使用第三方提供的sdk;
第三方sdk就是用来实现一些安卓官方没有提供的功能,可以让自己的app实现更加强大的功能。
app的开发中,难免会出现一些与后端或其它服务进行通讯的能力,所以这时就需要一个支持网络功能的模块。
网络模块,安卓开发中使用最多的就是okhttp,其提供了强大的网络通讯能力,为安卓开发中的网络请求提供了支持。
热更新功能,是很多app需要的功能,热更新就是在不停止应用的情况下,能够更新app中的功能。比如,炒股的app,或者对数据实时行要求比较高的app,这时关闭app几个小时进行更新,这对用户来说是不可被接受的。所以才有了热更新的功能。
因为app开发涉及到用户交互,而用户交互就可能有动画的需求,所以安卓中提供了多种动画的功能实现。
帧动画,属性动画,补间动画等。
当然,安卓开发中还有其它很多功能模块,不过这些是比较常用的,也是比较常见的功能模块。所以在此记录。