实习篇
文章平均质量分 66
2021.11.5日
独饮敌敌畏丶
做自己该做的事,并接收它的事与愿违!
展开
-
记录webView显示空白的又一坑
问题描述今天在app用webView加载网页。突然出现了加载不出来的情况。webView.getUrl()都能得到我要加载的Url。但是就是不显示我要加载的网页。在浏览器上是可以显示的解决思路1.因为之前遇到过类似的问题,是证书问题,所以我就看上次的解决方案能否解决。如图证书有问题,选择继续加载。但是,还是没解决2.各种百度,尝试各种方案比如mWebSettings.setDomStorageEnabled(true);//开启本地DOM存储我以为是html网页太大了,所以我就开启本原创 2022-01-14 12:08:58 · 2749 阅读 · 0 评论 -
Android面试计网面经大全【持续更新中。。。】
前言本篇文章为本人面试以及空闲时间整理的计网面试常见问题。供本人复习之用。分享给大家。大家可以评论补充哦!因为面试常见问题一般都是网络层,传输层以及应用层。所以我就按自上而下的顺序,来分享最后一次更新时间:2021.12.30一、应用层常见问题1.DNS如何得到ip地址假定域名为 m.xyz.com 的主机想知道另一台主机( 域名为 y.abc.com )的 IP 地址。例如,主机 m.xyz.com 打算发送邮件给主机 y.abc.com。这时候就必须知道主机 y.abc.com 的 IP 地原创 2021-12-30 15:55:43 · 1749 阅读 · 1 评论 -
webView因证书问题显示一片空白
问题现象webview一片空白,而各种浏览器都可以访问此url。但是会提示证书不安全的问题解决思路因为不管是手机访问,还是浏览器访问,都会提示证书问题,而webview有一个setWebViewClient(new MyWebViewCliecnt())方法,当webview加载的网页出现证书问题的时候,就会回调MyWebViewCliecnt的@Overridepublic void onReceivedSslError(final WebView view, final SslErrorHa原创 2021-12-22 14:36:43 · 951 阅读 · 0 评论 -
组件化学习
组件化学习(1)思想及实现方式组件化学习(2)Arouter原理学习组件化学习(3)ARouter中的Path和Group注解原创 2021-12-02 18:00:13 · 213 阅读 · 0 评论 -
组件化学习(3)ARouter中的Path和Group注解
这里就不对ARouter进行全面分析了,而是把其思想抽象出来理解1.介绍下Group和Path在上一篇文章中也提到过,Group就是组,Path就是组里面具体的类。在ARouter的api模块中,有针对Group和Path的接口ARouterGroup和ARouterPath。如下public interface ARouterGroup { Map<String, Class<? extends ARouterPath>> getGroupMap();}ARou原创 2021-12-02 15:25:52 · 2969 阅读 · 0 评论 -
组件化学习(2)Arouter原理学习
1.Arouter原理一句话总结ARouter的原理:就像上篇文章讲到的全局Map一样,它有一个在编译期生成的路由表。虽然各模块之间没有横向依赖,但是信息传递的时候,可以通过查找路由表,找到需要通信的模块的class对象,从而进行通信。也就是说ARouter的核心就是路由表ARouter是编译期的框架既然有表,那就有表中元素的register和get。register的时机,就显得很重要了。如果是在运行时register,则用户可能会感觉到卡顿。所以,ARouter选择了在编译时期register。原创 2021-12-02 10:35:35 · 622 阅读 · 0 评论 -
组件化学习(1)思想及实现方式
1.组件化的介绍我认为组件化,就是整个项目由app外壳,若干业务组件,以及公共基础组件构成。如图所示我认为组件化最明显的特点就是:各个业务模块之间没有直接的横向依赖。意义:不相互依赖,但是可以相互交互;高度解耦;自由拆卸2.组件化的部署关于如何将项目组件化,网上有大量的学习资源,我推荐一篇文章,写的超级详细:就是这一篇文章3.组件之间的通信:当然最常用的还是阿里开源的ARouter。这个就不多介绍了,但是除了这种方式,还有其他几个比较原始的方式①使用EventBus缺点:EventBus原创 2021-12-01 10:03:20 · 1978 阅读 · 1 评论 -
更新项目用到的sdk的标准流程
更新项目用到的sdk的标准流程①首先将项目用到的远程依赖改为本地依赖。这个作用是让项目使用本地的库,就先断开和远端的库的连接。这样就方便我们在本地更改sdk,然后直接就可以测试。②本地进行sdk代码③sdk更新后push,让公司专业人员进行代码更正④代码没问题后,进行版本更新步骤:(1)在sdk项目的需要更新的模块的build.gradle中,找到这个就是更新远程依赖的方法,版本就在最后一行。我们更新的时候,把更新后的版本号写到那里,然后进行下一步(2)然后切换渠道!!! 这个很重要!原创 2021-11-29 22:05:26 · 1118 阅读 · 0 评论 -
升级谷歌AdmobSDK的时候学到的东西
1.引用第三方SDK的策略用第三方SDK的时候,可以不直接用,而是自己封装一套SDK,然后在自己封装的SDK里面再引用第三方SDK,这样当第三方SDK升级的时候,前面的业务代码和我们自己封装的SDK代码逻辑都不用变,直接替换直接引用第三方SDK的那里就可以。其实就是封装的思想2.用github上传项目失败我现在是遇到了三种情况①SSH公钥丢失我用的SSH拉下来的,SSH和HTTPS的区别就是,SSH需要一个公钥,而我的公钥又被删了,所以总是push不上去。所以后面项目尽量用HTTPS拉,会方便很原创 2021-11-25 23:59:00 · 2001 阅读 · 0 评论 -
取消远程依赖,用本地依赖
意思就是说不用远程的sdk,而是把sdk下载到本地,和项目在同一目录,然后取消原来引用的远程sdk,使用本地的sdk上面是项目的根目录下的settings.gradle然后再在项目引用的库中的build.gradle中这样就可以在本地使用这个库了,不用再在比如github上面导入了...原创 2021-11-17 21:03:58 · 2452 阅读 · 0 评论 -
实习做了啥
原创 2022-02-06 15:50:26 · 1214 阅读 · 1 评论 -
项目,怎么打包
1.这时候,需要切换渠道当项目文件的图片是如图所示时,则表明需要切换到相应渠道了图标是这样的,因为我没有用google渠道。那么切换到google渠道就行了2.如何打包用AS运行项目,每种渠道可以有两种模式,即Debug模式和Release模式。(两种模式可以通过Build Variant进行更改)Debug模式一般是我们私下测试用的,可以使用默认的debug.keystore进行签名。Release一般是发布在市场上的正式版。我们正式发布项目的时候是不能使用debug.keystore的,而原创 2021-11-15 19:33:36 · 8972 阅读 · 6 评论 -
杂七杂八的学习
1.渠道,是干啥的?渠道,就是用来给项目打包的。说白了,就是不同的应用商店,对app有不同的要求,build Variants就是为不同的应用商店给项目打包。比如谷歌应用商店,华为应用商店,对app的上架要求不同。那么就需要将项目分别打包成他们想要的样子,才能上架。设置渠道,在Build Variants里面,有一个Official版本,就是官方渠道,也就是app官网上的版本,这个就没有啥限制了,由公司自己决定。渠道还可以用来携带信息,比如不同类型的手机,供运维的同学统计2.Dialog顾名思原创 2021-11-11 17:38:09 · 2717 阅读 · 0 评论 -
补补网络缺口
1.什么是零拷贝零拷贝,不是不需要拷贝,而是尽可能地减少不必要的拷贝,以节省CPU的资源,减少因上下文切换而造成的资源浪费上下文切换:比如用户在占着CPU,然后此时操作系统要用,那么就要把用户挪开,把操作系统放上去。也就是把上一个进程的东西挪走,下一个进程的东西挪进来。这就是一次上下文切换重点:Linux用到的零拷贝①传统的数据传送buffer = File.readSocket.send(buffer)此时会经过4次拷贝,4次上下文切换。先来看四次拷贝再来看四次上下文切换②M原创 2021-11-09 17:45:25 · 3209 阅读 · 0 评论 -
谷歌AdMob广告学习
学的杂七杂八的东西1.ss协议是什么我总结一下,ss/ssr的目的就是用来翻q的,侧重于流量混淆加密,穿透防火q是第一位,使用socket5代理。而vpn的目的是用来加密企业数据的,安全是第一位,本意并非是翻q对于vpn来说安全是第一位的,而对于ss/ssr来说穿透防火q是第一位,抗干扰性强,而且对流量做了混淆,(所有流量在通过防火q的时候,基本上都被识别为普通流量,也就是说你翻q了,但是相关部门是检测不到你在翻q的。)两者的出发点和着重点就不同,ss/ssr更注重流量的混淆加密。参考文章2. 配原创 2021-11-08 20:57:12 · 2759 阅读 · 3 评论 -
Retrofit学习
rest规范rest即Representational State Transfer,翻译过来就是(资源)表现层状态转换。我说下我对这个规范的理解资源,即一个URI代表一个资源,比如是一个文本,一个图片等。表现层,即资源的表现形式,比如文本可以用txt形式表现,图片可以用jpg,png形式表现。状态转换,即将资源的状态进行转换,比如得到资源,更改资源,删除资源等,对应HTTP四个方法,即GET,POST,PUT,DELETE。它有两个非常值得注意的点,第一个就是,URI中不应该包括动词(最常见的URI原创 2021-11-07 16:15:50 · 195 阅读 · 0 评论 -
OkHttp源码解析(二)五大拦截器
一.拦截器基本介绍在前面分发器的介绍中,可以看到通过getResponseWithInterceptorChain这一个方法,就可以获得响应。这个方法里面是这样的除了两个用户可以自己添加的拦截器之外,剩下的五个是默认的拦截器。他们之间是用责任链模式连接在一起责任链模式责任链上的处理者负责处理请求,客户只需要将请求发送到责任链即可,无须关心请求的处理细节和请求的传递,所以职 责链将请求的发送者和请求的处理者解耦了。比如点个外卖,它的流程是这样的我不必关心内部是具体怎么给我做的饭,美团外卖只管提原创 2021-11-06 15:55:30 · 1635 阅读 · 0 评论 -
OKHttp源码解析(一)分发器
一.OkHttp介绍OkHttp是由Square公司贡献的一个处理网络请求的开源项目,是目前Android使用最广泛的网络框架。使用它有以下好处1.支持HTTP2.0并允许对同一主机的所有请求共享一个套接字2.通过socket连接池,减少了请求延迟3.默认通过GZip压缩数据4.响应缓存,避免了重复请求的网络5.请求失败自动重试主机的其他ip,自动重定向至于如何实现这些的,相信看完整个OkHttp的介绍,你就清楚了二.OkHttp的基本使用(以Get请求为例)引入依赖。1.首先创建O原创 2021-11-01 18:07:44 · 346 阅读 · 0 评论 -
实习需要学的东西(暂定)
com.squareup.retrofit2:retrofit:2.1.0com.squareup.retrofit2:adapter-rxjava2:2.3.0com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.34shadowsocksjnicom.android.billingclient:billing还有google的Admob SDK谷歌广告的升级原创 2021-10-29 20:53:15 · 1085 阅读 · 0 评论