Android 高级程序员有哪些特性?

在工作之余,有时候我就在想,什么样的程序员属于高级程序员呢?或者说,高级程序员有哪些特性呢?工作年限一定不是关键的指标,许多工作多年的程序员依然写不出优雅的程序。无论是在Android 开发还是其他领域,高级程序员一定是勤奋的,可以快速地掌握大量的新技术、新框架,不仅懂得原理,还能把新的技术落地到公司的产品中去。这是衡量程序员工作能力的一个重要标准,那么怎样才能将技术运用自如呢?唯有实践。基于此,我将大厂中用到的一些技术经典案例,总结成了学习文档↓↓↓,以便为想要进步的Android 程序员增加更多的实战经验。

有需要的可以复制下方链接,传送直达!!!
https://qr21.cn/CaZQLo?BIZ=ECOMMERCE

本文主要以Android 组件化篇为主题,其目的是帮助程序员建立产品的思想,对于技术而言,孤立的存在是没有任何意义的,技术只有与需求相结合,才能具有自身的价值。技术人员在开发的过程中, 要时刻了解所完成的功能可以为公司带来哪些价值,是提升用户的访问兴趣,还是提升用户的 使用流畅度,抑或是其他。当以产品思维去思考技术的时候,就会有动力、有目的地学习更多有价值的技术,而不是哗众取宠地学一些“看似有用”的新技术。

首先我想问大家知道组件化、插件化、模块化的区别是什么不? 欢迎大家在评论区进行讨论这问题!!!

组件化、插件化、模块化的区别

  • 组件化的重心主要是放在业务逻辑层,主要是为了拆分业务逻辑,只针对业务逻辑
  • 模块化的重心主要是为了功能的重用,那功能拆分一个个的插件,针对整个项目
  • 组件化是不管开发中把业务拆分为多少个模块,最终在打包上线的时候,开发都会生成一个apk
  • 而插件化也是拆分为很多插件模块,但是在最终打包之后,成为了很多apk,最终我们把它上传到我们的服务器上面,用户使用的时候,只需要下载响应的apk即可,然后使用动态加载技术,加载里面相应的Activity

组件化开发优势

  • 当每次需要进行功能测试时,不需要整个项目运行,而是运行单一的组件即可
  • 如果要将某一个模块用到新项目中去,就很简单了,因为我们每一个模块都是一个独立的Application
  • 因为Application是不能依赖其他的Application
  • 不需要解耦合了、资源等等
  • 大团队开发中,组件化开发是开发的基石

组件化开发需要注意的点:

  • 主要注意包名和资源文件命名冲突问题
  • Gradle 中的版本号的统一管理
  • 组件在Application 和 Library 之间如何做到随意切换
  • AndroidManifest.xml文件的区分
  • Library 不能在 Gradle 文件中有Applicationld

从组件化实战来分析解决问题

模块化和组件化

模块化:具体的业务模块,例如商品详情模块,商品发布模块 ,搜索模块
组件化:单一的功能组件,如视频播放组件、分享组件等,每个组件都可以以一个单独的module 开发,并且可以单独抽出来作为 SDK 对外发布使用。

模块化和组件化的思想是一样的,都是对代码进行拆分,但模块化是按功能模块进行查分(业务导向),组件化是按功能模块进行查分(功能导向),模块化的颗粒度更大一些,组件的颗粒度更小一些,一个项目中模块和组件同时存在也是很常见的,各自负责各自的事情

如上图所示 是个组件化项目的基本架构:

  • 基础库、公共库:项目所需要的基础操作类,工具类 ,第三方库的引入封装 ,app宿主功能,各个模块,各个组件都依赖这个库
  • 组件层:项目用的功能模块或者业务模块,如:登录模块,视频播放组件,分享组件等
  • 应用层:宿主工程,APP的主项目,APP入口和主架子

组件化演示案例

WanAndroid APP 组件化项目实战附demo

得到 App

  • 提到了组件生命周期、服务注册的实现
  • 提到了公共层定义组件服务、base层定义通用资源
  • 提到了 implementation 与 runtimeOnly 的代码 / 资源隔离效果;
  • 提到了 JIMU 插件的调试切换、智能配置功能;
  • 提到了 2 种调用组件声明周期的方法: javassist 和反射;
  • 提到了有序初始化组件的解决方案:StartUp、DAU

微信 App

  • 提到了微信架构演进:简单分层架构 -> 多进程架构 -> 多子工程并行开发架构;
  • 提到了基础工程存在中心化的问题:越来越多的代码/事件很“自然的”被下沉到基础工程;
  • 提出了重塑模块化的 3 个目标:改变通信方式、重新设计模块、约束代码边界
  • 提出了服务注册的通信方式
  • 提出了新颖的接口暴露方法:将文件后缀修改为 .api (需配合include_with_api 命令)
  • 设计了模块生命周期:dependency()、configure()、execute()
  • 设计了 pins 工程结构,用于约束代码边界
  • 提出了组件化的考量问题:动态性、隔离性

美团 App

  • 设计了组件消息总线 modular-event
  • 设计了组件化路由框架 WMRouter

其实还有一些大厂APP 所用到组件化实例记录,像支付宝、爱奇艺、猫眼、有赞、携程……等,由于文章篇幅有限,无法进行一一展现,所以其整理成了学习文档,并命名为《高级Android组件化强化实战》,有需要的可以往下看↓↓↓

有需要的可以复制下方链接,传送直达!!!
https://qr21.cn/CaZQLo?BIZ=ECOMMERCE

再厉害的武功秘籍,修炼完后,都需要去进行实践,否则无法检测出自己的成果。

原文地址:https://blog.csdn.net/weixin_61845324

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


更新Android SDK到3.0版本时,遇到Failed to rename directory E:\android\tools to E:\android\temp\ToolPackage.old01问题,导致无法更新,出现该问题的原因是由于3.0版本与较早的sdk版本之间文件结构有冲突,解决
Android 如何解决dialog弹出时无法捕捉Activity的back事件 在一些情况下,我们需要捕捉back键事件,然后在捕捉到的事件里写入我们需要进行的处理,通常可以采用下面三种办法捕捉到back事件: 1)重写onKeyDown或者onKeyUp方法 2)重写onBackPressed方
Android实现自定义带文字和图片的Button 在Android开发中经常会需要用到带文字和图片的button,下面来讲解一下常用的实现办法。一.用系统自带的Button实现 最简单的一种办法就是利用系统自带的Button来实现,这种方式代码量最小。在Button的属性中有一个是drawable
Android中的"Unable to start activity ComponentInfo"的错误 最近在做一款音乐播放器的时候,然后在调试的过程中发现一直报这个错误"Unable to start activity ComponentInfo",从字面
Android 关于长按back键退出应用程序的实现最近在做一个Android上的应用,碰到一个问题就是如何实现长按back键退出应用程序。在网上查找了很多资料,发现几乎没有这样的实现,大部分在处理时是双击back键来退出应用程序。参考了一下双击back键退出应用程序的代码,网上主流的一种方法是下面
android自带的时间选择器只能精确到分,但是对于某些应用要求选择的时间精确到秒级,此时只有自定义去实现这样的时间选择器了。下面介绍一个可以精确到秒级的时间选择器。 先上效果图: 下面是工程目录: 这个控件我也是用的别人的,好像是一个老外写的,com.wheel中的WheelView是滑动控件的主
Android平台下利用zxing实现二维码开发 现在走在大街小巷都能看到二维码,而且最近由于项目需要,所以研究了下二维码开发的东西,开源的二维码扫描库主要有zxing和zbar,zbar在iPos平台上应用比较成熟,而在Android平台上主流还是用zxing库,因此这里主要讲述如何利用zxing
Android ListView的item背景色设置以及item点击无响应等相关问题 在Android开发中,listview控件是非常常用的控件,在大多数情况下,大家都会改掉listview的item默认的外观,下面讲解以下在使用listview时最常见的几个问题。1.如何改变item的背景色和按
如何向Android模拟器中导入含有中文名称的文件在进行Android开发的时候,如果需要向Android模拟器中导入文件进行测试,通过DDMS下手动导入或者在命令行下通过adb push命令是无法导入含有中文文件名的文件的。后来发现借用其他工具可以向模拟器中导入中文名称的文件,这个工具就是Ultr
Windows 下搭建Android开发环境一.下载并安装JDK版本要求JDK1.6+,下载JDK成功后进行安装,安装好后进行环境变量的配置【我的电脑】-——>【属性】——>【高级】 ——>【环境变量】——>【系统变量】中点击【新建】:变量名:CLASSPATH变量值:……
如何利用PopupWindow实现弹出菜单并解决焦点获取以及与软键盘冲突问题 在android中有时候可能要实现一个底部弹出菜单,此时可以考虑用PopupWindow来实现。下面就来介绍一下如何使用PopupWindow实现一个弹出窗。 主Activity代码:public void onCreat
解决Android中的ERROR: the user data image is used by another emulator. aborting的方法 今天调试代码的时候,突然出现这个错误,折腾了很久没有解决。最后在google上找到了大家给出的两种解决方案,下面给出这两种方法的链接博客:ht
AdvserView.java package com.earen.viewflipper; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory;
ImageView的scaleType的属性有好几种,分别是matrix(默认)、center、centerCrop、centerInside、fitCenter、fitEnd、fitStart、fitXY。 |值|说明| |:--:|:--| |center|保持原图的大小,显示在ImageVie
文章浏览阅读8.8k次,点赞9次,收藏20次。本文操作环境:win10/Android studio 3.21.环境配置 在SDK Tools里选择 CMAKE/LLDB/NDK点击OK 安装这些插件. 2.创建CMakeLists.txt文件 在Project 目录下,右键app,点击新建File文件,命名为CMakeLists.txt点击OK,创建完毕! 3.配置文件 在CMa..._link c++ project with gradle
文章浏览阅读1.2w次,点赞15次,收藏69次。实现目的:由mainActivity界面跳转到otherActivity界面1.写好两个layout文件,activity_main.xml和otherxml.xmlactivity_main.xml<?xml version="1.0" encoding="utf-8"?><RelativeLayout ="http://schemas..._android studio 界面跳转
文章浏览阅读3.8w次。前言:最近在找Android上的全局代理软件来用,然后发现了这两款神作,都是外国的软件,而且都是开源的软件,因此把源码下载了下来,给有需要研究代理这方面的童鞋看看。不得不说,国外的开源精神十分浓,大家相互使用当前基础的开源软件,然后组合成一个更大更强的大开源软件。好吧,废话不多说,下面简单介绍一下这两款开源项目。一、ProxyDroid:ProxyDroid功能比较强大,用到的技术也比较多,源码也_proxydroid
文章浏览阅读2.5w次,点赞17次,收藏6次。创建项目后,运行项目时Gradle Build 窗口却显示错误:程序包R不存在通常情况下是不会出现这个错误的。我是怎么遇到这个错误的呢?第一次创建项目,company Domain我使用的是:aven.com,但是创建过程在卡在了Building 'Calculator' Gradle Project info这个过程中,于是我选择了“Cancel”第二次创建项目,我还是使用相同的项目名称和项目路_r不存在
文章浏览阅读8.9w次,点赞4次,收藏43次。前言:在Android上使用系统自带的代理,限制灰常大,仅支持系统自带的浏览器。这样像QQ、飞信、微博等这些单独的App都不能使用系统的代理。如何让所有软件都能正常代理呢?ProxyDroid这个软件能帮你解决!使用方法及步骤如下:一、推荐从Google Play下载ProxyDroid,目前最新版本是v2.6.6。二、对ProxyDroid进行配置(基本配置:) (1) Auto S_proxydroid使用教程
文章浏览阅读1.1w次,点赞4次,收藏17次。Android Studio提供了一个很实用的工具Android设备监视器(Android device monitor),该监视器中最常用的一个工具就是DDMS(Dalvik Debug Monitor Service),是 Android 开发环境中的Dalvik虚拟机调试监控服务。可以进行的操作有:为测试设备截屏,查看特定进程中正在运行的线程以及堆栈信息、Logcat、广播状态信息、模拟电话_安卓摄像头调试工具