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实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.

MySQL 设置AUTO_INCREMENT 无效的问题解决

《MySQL设置AUTO_INCREMENT无效的问题解决》本文主要介绍了MySQL设置AUTO_INCREMENT无效的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录快速设置mysql的auto_increment参数一、修改 AUTO_INCREMENT 的值。

关于跨域无效的问题及解决(java后端方案)

《关于跨域无效的问题及解决(java后端方案)》:本文主要介绍关于跨域无效的问题及解决(java后端方案),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录通用后端跨域方法1、@CrossOrigin 注解2、springboot2.0 实现WebMvcConfig

Go语言中泄漏缓冲区的问题解决

《Go语言中泄漏缓冲区的问题解决》缓冲区是一种常见的数据结构,常被用于在不同的并发单元之间传递数据,然而,若缓冲区使用不当,就可能引发泄漏缓冲区问题,本文就来介绍一下问题的解决,感兴趣的可以了解一下... 目录引言泄漏缓冲区的基本概念代码示例:泄漏缓冲区的产生项目场景:Web 服务器中的请求缓冲场景描述代码

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

解决JSONField、JsonProperty不生效的问题

《解决JSONField、JsonProperty不生效的问题》:本文主要介绍解决JSONField、JsonProperty不生效的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录jsONField、JsonProperty不生效javascript问题排查总结JSONField

github打不开的问题分析及解决

《github打不开的问题分析及解决》:本文主要介绍github打不开的问题分析及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、找到github.com域名解析的ip地址二、找到github.global.ssl.fastly.net网址解析的ip地址三

RedisTemplate默认序列化方式显示中文乱码的解决

《RedisTemplate默认序列化方式显示中文乱码的解决》本文主要介绍了SpringDataRedis默认使用JdkSerializationRedisSerializer导致数据乱码,文中通过示... 目录1. 问题原因2. 解决方案3. 配置类示例4. 配置说明5. 使用示例6. 验证存储结果7.