首页
学习
活动
专区
圈层
工具
发布

关于App重构的几个方面

最近跟一个朋友聊到关于App架构的问题, 其中就聊到一个App, 开发了很长时间, 一开始没有去想框架的事儿, 迭代过程中, 由于时间紧, 任务重, 人员更替等原因, 也没能保证代码质量, 很多设计原则被抛之脑后...从而引申出如何重构App代码的话题, 谈点个人理解: 什么情况下需要重构 1, 结构错乱 代码无法分出层次, 无法分清业务线. 各个业务模块间/层次间的代码互相夹杂....其实这是一个对症下药的问题, 针对为什么要重构提出的几个代码问题, 重构也可以分成以下几步: 1, 架构选择, 结构调整 根据App的业务场景(展示型, 交互型, 后台工具型…)选择合适的架构. 1 并不是说一定要选用一个架构..., 比如说后台工具型的App, 可能界面不多, 也服务器的交互也少, 基本是由Service组成, 可能直接用Android原生的结构就可以. 2 界面较多, 且与服务器交互较多的建议选用MVP架构....附—关于架构重构的规则 写完此文, 偶然机会在InfoQ上看到Uber的技术主管Raffi Krikorian在 O’Reilly Software Architecture conference上谈及的关于架构重构的

93450
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    关于手机App的Https抓包

    我喜欢用 Mitmproxy 来处理手机 App 抓包之类的工作,本来用它来抓 Https 包是很容易的一件事,只要设置好代理,浏览 mitm.it 按提示安装证书即可,可是当 Android 版本升级到...因为我是用 Mitmproxy 来抓包的,所以要安装的也是 Mitmproxy 的证书。...答案是「SSL Pinning」,它是为了应对中间人攻击而出现的一种技术,简单点说,就是证书被打包到 App 里,每次请求都会验证证书一致性。...如此一来,虽然我们可以安装系统级证书,但是当 App 验证证书一致性的时候就失败了,如何突破此限制呢?答案很简单,你不是要验证一致性么,我统统返回 OK 不就行了!...image.png Xposed image.png JustTrustMe 如果你认认真真从头看到尾,那么恭喜你,关于手机 App 的 Https 抓包,你已经是专家了!

    1.9K20

    关于Android中App的停止状态

    从Android 3.1(HoneyComb) 也就是API 12开始,Android引入了一套新的启动控制,这就是程序的停止状态.那让我们看一下Google对于程序的停止状态的描述....将已经支持的程序加入到能处理intent的目标处理者....需要注意的是,系统会默认地对所有的广播intent增加一个FLAG_EXCLUDE_STOPPED_PACKAGES的flag,这样做的目的是为了阻止来自后台服务的广播不慎或者启动处于停止状态的程序的不必要的组件...通常的intnet广播,处于停止状态的程序的receiver是无法接受到的.那么怎么才能让这些停止状态的程序接受到呢?...提问:系统的程序刚安装会处于停止状态么? 回答:系统的程序通常会存放在 /system/app目录下,在一开始安装之后不会处于停止状态.

    2.5K10

    关于直播APP源码底层技术的分析

    我们采用一组直播APP源码,可以轻松构建一个在线直播系统开发平台。然而真正好的直播源码,开发难度其实比其他软件技术上要高一些,也复杂一些。...随着互联网行业以及市场趋势的变化,直播行业迎着时代的浪潮开启新的征程,各行各业开始了直播的新模式,直播APP源码究竟多重要相比这里不必多说。...现在市场上的直播源码错综复杂,选择的时候还是建议不要贪图便宜而是要选择自主研发的原生直播APP源码。...一套优质的原生直播APP源码,在进行开发和搭建的过程中,底层搭建技术都有哪些,我们可以简单来看一下。 直播备份.png 1、服务器系统。...现如今各行业也已开启直播带货,进入直播时代,未来直播APP源码在技术上还会又怎样的发展变化,让我们拭目以待。

    1.5K30

    【转】关于Android App存储目录的理解

    转自:关于Android App存储目录的理解 一、内部存储: 每个app具有以下目录: data/data/包名/shared_prefs (使用sharedPreferenced的时候,将数据持久化存储于本地...) data/data/包名/databases (Android集成了SQLite数据库,App里边的数据库文件就存储于databases文件夹) data/data/包名/files (普通数据存储在...公有目录是指在storage目录创建的目录,应用卸载,这个文件夹不会被删除。 “清除数据” 是指清除app内部存储的所有目录和外部存储的私有目录下的所有数据。APP恢复到首次安装时的状态。..."清除缓存" 是指清除app内部存储目录下的cache目录。(如果应用内部缓存了数据到cache目录,就会被删除。例如:网络图片的缓存) 三、Webview的缓存 可以分为网页缓存和数据缓存。...页面缓存是指加载一个网页时的html、JS、CSS等页面或者资源数据。数据缓存分为两种:AppCache和DOM Storage(Web Storage)。 缓存的存储目录是应用的cache目录。

    3.5K10

    关于搭建海外社交APP源码的干货

    1.探查市场需求:调查海外市场社交APP用户的需求,分析APP源码卖点和亮点,打造自己专属的品牌。...2.制定计划和商业部署:考虑不同国家和地区的文化差异,从而找到APP目标受众、核心功能、盈利模式和营销策略。...3.进行市场调研:了解海外用户对社交APP的喜好和需求,收集反馈,以便在开发过程中进行改进和优化。4.设计用户界面和用户体验:开发易用,吸引人的用户界面。...8.多语言和本地化:如果APP源码面向多个国家或地区,要支持多种语言,考虑到不同国家和地区可能存在的法律和审查要求,并适应不同的文化背景和习惯。...9.测试和调优:在发布之前进行全面的测试调优,确保APP源码的稳定性。修复出现的错误和问题,并根据用户反馈做出改进。10.上线和推广:如Apple App Store。

    56420

    【备案】关于存量APP备案通知

    尊敬的用户: 您好! 为进一步落实工业和信息化部颁布的《工业和信息化部关于开展移动互联网应用程序备案工作的通知》要求。...,未履行备案手续的,不得从事APP互联网信息服务。...二、 时间要求 2023年9月1日前已经开展业务的APP,需要在2024年3月31日前完成备案手续。...对于已履行网站备案手续的,请APP主办者登录腾讯云代备案管理系统补报APP备案相关信息与材料,并通过备案主体所在通信管理局审核。...如您的主体有已上架的APP应用,请依照相关法规要求,尽快完成备案手续。 操作指引可点击 - APP备案操作。 感谢您对腾讯云的信赖与支持,如您有其他问题,请在线支持 - 腾讯云进入在线服务咨询。

    3.2K30

    关于mui开发的APP自动更新的问题

    关于APP自动更新的问题,可是有点坑啊,以下就是我遇到的问题,这是安卓版本的,ios的没有写,因为ios必须去应用商店下 话不多说,直接上代码 先进行获取手机APP当前的信息 const wgtVer...,下面会用到 }); 这里就是进行获取你们服务器的数据的数据,为了容易看懂,也没有封装,就为了简单明了 function getversion1() { let svno = ""; let svurl...,比如当前的版本号, 后台已经上传的版本号,每个后台返回格式不一样, 请按照你的后台返回格式来哦 console.log("当前版本号:" + wgtVer) console.log("...也许你看的有点懵逼,那我就上传一份我当时的完整的代码,你中间自己修改成你需要的东西 function getversion1() { var svno = ""; var svurl =...开发的app 的更新问题,有问题请留言,谢谢,一起努力一起进步

    1.4K40

    关于flask入门教程-app代码

    它可以很好地结合MVC模式进行开发,开发人员分工合作,小型团队在短时间内就可以完成功能丰富的中小型网站或Web服务的实现。...另外,Flask还有很强的定制性,用户可以根据自己的需求来添加相应的功能,在保持核心功能简单的同时实现功能的丰富与扩展,其强大的插件库可以让用户实现个性化的网站定制,开发出功能强大的网站。...在本微小项目应用的flask程序里实现了系统的登陆、注销、主页面、用户信息的查询、增加、删除、修改等功能。...关于主框架 # 将原生SQL语句返回结果集转换为字典 def datatodict(): # 检查登陆情况 def login_check(): login.html # 上下文钩子...name__ == '__main__': app.run() 系统常用到的几个标准函数 # 将原生SQL语句返回结果转换为字典 def datatodict(resultProxy,fetch

    97420

    apns关于APP数字角标的理解

    但是当APP完成退出后台的时候,想要app监听到通知并且读取通知信息设置角标,这个好像是办不到的!...其中“badge"就是app的角标数字 所以要证实APP的桌面红色角标(未读消息数字)到底是由后台控制的还是移动端自己控制的,这个很容易。...让app内部不要自己操作角标变化,或者把该app完全退出,然后后台开始推送,假设推送的消息badge是数字几,而且app的角标也是显示数字几, 这个就足以证明app的红色角标是由后台推送时候控制的了!...就能做到app精准的显示未读消息数字了。 我们看比如QQ,微信等app,它们的角标数字是做的非常精准的,人家的后台之强大,那是没得比的。 但是我们一般的APP, 你也想做到角标精准?有必要吗?...一般来说,大多数app的角标数字做的是意思意思,没那个精准,我测试过的有百度地图、简书、新浪财经等等,app的角标显示也没有做什么精准显示。

    2.6K30

    关于URLDNS链的学习

    如果此位置上的数据为空,此时的key1-value1添加成功。...----情况1 如果此位置上的数据不为空,(意味着此位置上存在一个或多个数据(以链表形式存在)),比较key1和已经存在的一个或多个数据的哈希值: 如果key1的哈希值与已经存在的数据的哈希值都不相同,...补充:关于情况2和情况3:此时key1-value1和原来的数据以链表的方式存储。 在不断的添加过程中,会涉及到扩容问题,默认的扩容方式:扩容为原来容量的2倍,并将原有的数据复制过来。...当数组的某一个索引位置上的元素以链表形式存在的数据个数>8且当前数组的长度〉64时,此时此索引位置上的所有数据改为使用红黑树存储。...为tab数组中抽出来的,而tab的值即HashMap中table的值。

    88740

    关于最近学习的总结

    h 最近在努力脑补php和前端(当然个人还是精通php),后端写的比较多,前端仿造了某人博客的设计,叫简介。...先记录下最近学的吧 dw的使用:个人感觉用dw写php还是比较上手的,感觉各方面都可以,主要是dw自带的浏览器貌似用的IE内核(这点比较坑)很多效果也看不到,所以需要频繁使用浏览器...记录下常用功能: 1站点的添加,管理 image.png 在站点选项卡内,点击即可 1.2代码的格式化(个人认为dw的格式化不是特别好用...if(){ }elseif(){ }else{ } 写过php的if之后感觉shell语言的if已经快忘得差不多了 下面贴上shell的if if [];then...3.vi编辑器的使用 利用晚上的空闲时间学习了vi编辑器的使用(之前都是用nano) vi 文件名 3.1开启编辑模式 打开文件之后按键盘上的i即可 这样软件下方会显示

    52300

    关于app提示专为旧版Android打造的有关测试

    因为经常进自己网站左康右康有没有人访问(极度自恋),老是去翻浏览器书签很麻烦,最近就想着把网站打包一个app,虽然我这破站也没什么可看的,不过至少打包后加点快捷功能就看不出来我一直在划水了 0x01...正文 说是做个app,但是我又完全不懂安卓,这可怎么办呢。...正好想到之前大名鼎鼎的Funsion App,可以快捷的将网站做成app,于是就下载来试了一下,调了半个小时就做好了(也就改改图标之类的,也没什么技术含量,就不献丑了),说起来这应用确实简单,没有一点安卓编程基础的都能用...方法,如下: final boolean realStartActivityLocked(ActivityRecord r, ProcessRecord app, boolean andResume,...app作品了,不过要是有看得上的小伙伴们还是想让你们更方便的踩踩我的站啦,哈哈!

    5.5K20

    python 关于epoll的学习

    对于network io来说,很多时候数据在一开始还没有到达(比如,还没有收到一个完整的UDP包),这个时候kernel就要等待足够的数据到来。而在用户进程这边,整 个进程会被阻塞。...所以,blocking IO的特点就是在IO执行的两个阶段(等待数据和拷贝数据两个阶段)都被block了。    ...几乎所有的程序员第一次接触到的网络编程都是从listen()、send()、recv() 等接口开始的,这些接口都是阻塞型的。使用这些接口可以很方便的构建服务器/客户机的模型。    ...在python socket模型当中,当使用socket初次编程的时候都会遇到一个阻塞问题;当一个socet的server被一个client暂用之后;参数了阻塞,新的连接是不能进来的,当然还有一个封装的...下面学习用epoll的方式来进行网络编程,当然对比与select只能打开1024(可以调整,但是文件描述符多了性能会下降)epoll的优势就非常明显了。    代码: #!

    63120

    关于mui 中开发App中fire事件的使用

    想解决的问题 你是不是想在混合开发中子页面返回父页面中触发父页面的事件 首先你得对mui开发混合app有所了解,然后你就会知道,其实坑特别多 先创建一个H5+APP就是下面这样样子 然后就按照你一般的操作新建一个....html的文件,中间内容省略,直接来问题 下面这句代码最好还是写上,虽然不写也可以,但是好习惯是养成的 document.addEventListener('plusready', function...() { 这里是页面初始化 }); 然后当前页面,你该写什么内容就写什么内容,根据你的想法或者UI设计的原型图完美的去实现这个页面下面就是我实现的页面...ID,完整的返回方法如下 var twebc = plus.webview.getWebviewById(“index.html”); var backk = function() { let...,比如什么刷新啊, 改变状态啊,等等,具体还是要看自己的逻辑 }); }); 以上就是分享的内容啦,不懂的可以留言,大家一起努力( ^_

    1.1K40

    关于我用CodeBuddy开发了几个APP的体验

    背景一直想写,但是太忙了,用CodeBuddy新开发iOSAPP,又同时想做鸿蒙APP,好家伙,是真的忙不过来。虽然没赶上征文,但是还是分享下使用的体验。...优点先说优点:开发快速,只需要说一句话,就能快速搭建一个APP的框架,实现基本功能。...不依赖语言,通过类似的工具,模糊了开发语言的鸿沟,不必说必须学会了某个开发语言,才能开发某种APP或网站,初步能实现"任何人只要有想法,都可以开发任何东西"(Ps: 这点后面会有补充)。...比如:开发《哈哈狗记账》的时候,脑子里只有一个想法,就是按照吃穿住行分类,做一个记账APP,数据能够同步到iCloud,界面没有设计,只有一个大致想法。...app没问题,但是实现的权限配置里,少了几个字段,导致编译失败,它自己检查不出来,就很尴尬了,最后还是要去浏览器里搜索手动解决再比如做《哈哈狗记账》的时候,需要同步数据到iCloud,它可以在本地把所有字段都定义好

    72620
    领券