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开发中遇到的技术难题是什么,你是怎么解决的?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/duoduo_11011/article/details/128096955
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/708029

相关文章

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

504 Gateway Timeout网关超时的根源及完美解决方法

《504GatewayTimeout网关超时的根源及完美解决方法》在日常开发和运维过程中,504GatewayTimeout错误是常见的网络问题之一,尤其是在使用反向代理(如Nginx)或... 目录引言为什么会出现 504 错误?1. 探索 504 Gateway Timeout 错误的根源 1.1 后端

解决升级JDK报错:module java.base does not“opens java.lang.reflect“to unnamed module问题

《解决升级JDK报错:modulejava.basedoesnot“opensjava.lang.reflect“tounnamedmodule问题》SpringBoot启动错误源于Jav... 目录问题描述原因分析解决方案总结问题描述启动sprintboot时报以下错误原因分析编程异js常是由Ja

Android协程高级用法大全

《Android协程高级用法大全》这篇文章给大家介绍Android协程高级用法大全,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起学习吧... 目录1️⃣ 协程作用域(CoroutineScope)与生命周期绑定Activity/Fragment 中手

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

深度剖析SpringBoot日志性能提升的原因与解决

《深度剖析SpringBoot日志性能提升的原因与解决》日志记录本该是辅助工具,却为何成了性能瓶颈,SpringBoot如何用代码彻底破解日志导致的高延迟问题,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言第一章:日志性能陷阱的底层原理1.1 日志级别的“双刃剑”效应1.2 同步日志的“吞吐量杀手”

MySQL 表空却 ibd 文件过大的问题及解决方法

《MySQL表空却ibd文件过大的问题及解决方法》本文给大家介绍MySQL表空却ibd文件过大的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录一、问题背景:表空却 “吃满” 磁盘的怪事二、问题复现:一步步编程还原异常场景1. 准备测试源表与数据

解决Nginx启动报错Job for nginx.service failed because the control process exited with error code问题

《解决Nginx启动报错Jobfornginx.servicefailedbecausethecontrolprocessexitedwitherrorcode问题》Nginx启... 目录一、报错如下二、解决原因三、解决方式总结一、报错如下Job for nginx.service failed bec

SysMain服务可以关吗? 解决SysMain服务导致的高CPU使用率问题

《SysMain服务可以关吗?解决SysMain服务导致的高CPU使用率问题》SysMain服务是超级预读取,该服务会记录您打开应用程序的模式,并预先将它们加载到内存中以节省时间,但它可能占用大量... 在使用电脑的过程中,CPU使用率居高不下是许多用户都遇到过的问题,其中名为SysMain的服务往往是罪魁