Android -- 每日一问:你在Android开发中遇到的技术难题是什么,你是怎么解决的?

2024-02-14 08:50

本文主要是介绍Android -- 每日一问:你在Android开发中遇到的技术难题是什么,你是怎么解决的?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

经典回答

一个工作过几年的程序员肯定会有工作中遇到技术难点问题,虽然这个问题有可能对于别人不是技术难点,但只要对于当时的你是技术难点,只要让你抓耳挠腮毫无头绪就往往会在你的大脑中留下深刻的印象。

这个问题,我也比较难教大家怎么回答,我只能给大家做一个示范,如果问到我,我怎么回答。

因为我这两年主要的工作是给一家公司做Android插件框架的开发,所以我的第一反应就是刚做插件时遇到的茫然无助。先给大家说一下插件是什么以及为什么要做插件,估计面试官不太了解的话,也会这样问你的。

image.png

如上图所示,随着应用的业务和功能代码的无节操增大,技术上代码方法数到达了一个DEX文件(那时Google还没有推出MultiDex)的上限(65536),业务上太多的模块和业务逻辑混在一个应用中,部署和升级都遇到很麻烦的问题,不能快速响应业务的发展。

基于这些痛点,我们想到了“动态插件”方面,把各个业务模块独立出来成为一个个可以动态加载、独立升级的插件,而原来的应用做为一个平台承载这些插件。思路是很不错的,可是当时(2014年底)关于Android插件的资源和开源项目都很有限,并没有那么多现成的开源框架让我们借鉴。

不过问题总是要解决的,我的解决方案如下:

  • 当时有一家叫ApkPlug的小公司做出了一套插件框架,我打电话和他联系看能否交流(回答当然是买产品可以,技术就免了),如果对方能提供优质的服务是可以考虑花钱使用他们的框架。

  • 试用ApkPlug的产品把它能做到的功能点记录下来,对比一下是否完全符合我们的业务需求。这一步至少给我一个意识:“只要ApkPlug能实现的就证明技术上是行得通的”, 对于还在起步阶段的我们信心很重要。

  • 收集其他相关的信息以评估自己实现插件框架的可行性,如Apache flex的OSGI模块化开发框架也进入我们的尝试提案。

最终我们决定自己来实现插件框架,当时遇到过很多技术“难点”,如“如何实现在插件中不改变开发者的习惯正常调用startActivity”,“自定义View的在插件 Activity 切换时的类加载有问题”,“插件升级时so不能正常加载的问题”等等。问题很多,解决这些问题,基本上都是靠先理一遍正常的一个APK应用在 Android 系统上是个怎么样的流程,详细的查看 Framework 层代码的调用过程,最后找到问题的解决点。

你的朋友是不是也在准备面试呢?你可以“请朋友读”,把今天的题目分享给好友,或许你能帮到他。

这篇关于Android -- 每日一问:你在Android开发中遇到的技术难题是什么,你是怎么解决的?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/708029

相关文章

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

IDEA和GIT关于文件中LF和CRLF问题及解决

《IDEA和GIT关于文件中LF和CRLF问题及解决》文章总结:因IDEA默认使用CRLF换行符导致Shell脚本在Linux运行报错,需在编辑器和Git中统一为LF,通过调整Git的core.aut... 目录问题描述问题思考解决过程总结问题描述项目软件安装shell脚本上git仓库管理,但拉取后,上l

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

解决docker目录内存不足扩容处理方案

《解决docker目录内存不足扩容处理方案》文章介绍了Docker存储目录迁移方法:因系统盘空间不足,需将Docker数据迁移到更大磁盘(如/home/docker),通过修改daemon.json配... 目录1、查看服务器所有磁盘的使用情况2、查看docker镜像和容器存储目录的空间大小3、停止dock

idea npm install很慢问题及解决(nodejs)

《ideanpminstall很慢问题及解决(nodejs)》npm安装速度慢可通过配置国内镜像源(如淘宝)、清理缓存及切换工具解决,建议设置全局镜像(npmconfigsetregistryht... 目录idea npm install很慢(nodejs)配置国内镜像源清理缓存总结idea npm in

idea突然报错Malformed \uxxxx encoding问题及解决

《idea突然报错Malformeduxxxxencoding问题及解决》Maven项目在切换Git分支时报错,提示project元素为描述符根元素,解决方法:删除Maven仓库中的resolv... 目www.chinasem.cn录问题解决方式总结问题idea 上的 maven China编程项目突然报错,是

在Ubuntu上打不开GitHub的完整解决方法

《在Ubuntu上打不开GitHub的完整解决方法》当你满心欢喜打开Ubuntu准备推送代码时,突然发现终端里的gitpush卡成狗,浏览器里的GitHub页面直接变成Whoathere!警告页面... 目录一、那些年我们遇到的"红色惊叹号"二、三大症状快速诊断症状1:浏览器直接无法访问症状2:终端操作异常

mybatis直接执行完整sql及踩坑解决

《mybatis直接执行完整sql及踩坑解决》MyBatis可通过select标签执行动态SQL,DQL用ListLinkedHashMap接收结果,DML用int处理,注意防御SQL注入,优先使用#... 目录myBATiFBNZQs直接执行完整sql及踩坑select语句采用count、insert、u

MyBatis Plus大数据量查询慢原因分析及解决

《MyBatisPlus大数据量查询慢原因分析及解决》大数据量查询慢常因全表扫描、分页不当、索引缺失、内存占用高及ORM开销,优化措施包括分页查询、流式读取、SQL优化、批处理、多数据源、结果集二次... 目录大数据量查询慢的常见原因优化方案高级方案配置调优监控与诊断总结大数据量查询慢的常见原因MyBAT

MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决

《MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决》MyBatis默认开启一级缓存,同一事务中循环调用查询方法时会重复使用缓存数据,导致获取的序列主键值均为1,... 目录问题原因解决办法如果是存储过程总结问题myBATis有如下代码获取序列作为主键IdMappe