自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

转载 Retrofit在客户端保持Cookie

移动端项目和网站还是多多少少的区别的,拿这个用户登陆过期验证这个流程来说吧,一般的网站是不会做处理的,浏览器访问的时候会自动带有Cookie的,移动端这样处理就不行的,他是不会保存Cookie的,所以我们在做项目的时候,一般来说,服务器的哥们都会在登陆成功之后给你返回一个叫做Token的东西,其实就是验证授权,这个东西就像是SessionId,但是本质又不一样(目前能力理解)。这样,你用移动端每一次网络请求都把这个Token当做公共参数传递给服务器,这时候服务器会根据这个唯一的Token值拿到在redis缓

2021-06-16 16:53:54 264

转载 retrofit 2.0+okHttp3.9添加公共参数【史上支持最全get、post(Filed、Part、PartMap)】

https://www.jianshu.com/p/f77d379ebcfa

2021-01-28 14:59:17 442 1

转载 Android 十大布局

作者:静心Study链接:https://juejin.cn/post/6898705241542737928回顾 Android 布局曾经无论面试也好,闲聊也罢,谈起 Android 布局,总是不假思索直接说出五大布局。而到现在 2020 年末了,依然还是曾经的五大布局吗?这里简单的整理了一部分,按照个人使用频率排序:ConstraintLayout: 约束布局 LinearLayout: 线性布局 RelativeLayout: 相对定位布局 FrameLayout: 帧布局.

2020-12-07 09:59:26 815 1

转载 Android集合使用

Java最常用的集合类,顶层接口Collection和Map两个接口(1)Collection接口:(包括List,Set,Queue三大子接口)1---List接口(对象按照索引位置排序,可以有重复对象,允许按照对象在集合中的索引位置检索对象)1,ArrayList线程不同步,数组结构,查询快,增删慢2,LinkedList线程不同步,链表结构,增删快,查询慢3,Vector线程同步,数组结构,都慢,过时--Stack4,CopyOnWriteArray...

2020-10-30 11:27:45 397

转载 强弱软虚引用

为什么要进行内存优化?.app运行内存限制,OOM导致app崩溃;app流畅性、相应速度和用户体验和内存息息相关。android的内存管理方式:android系统内存分配与回收方式:每个app对应一个linux进程,在一个虚拟机下运行。 cmd ->adb shell 命令行模式下用ps命令可以看到所有正在运行的进程。GC只在Heap剩余空间不够时才出发进行垃圾回收。 app内存限制机制:每个app分配的最大内存限制随不同设备而不同;图片是吃内存的大户。 切换应用时后台app清理机制:..

2020-10-29 09:58:54 81

转载 APK优化方案

第一步:将图片转为webp格式webp格式类似与jpeg、png,但是体积要远比jpeg和png小。下面是百度百科对webp的解释:WebP编码对于哈夫曼压缩性能更优异些,哈夫曼与WebP本质上都是从编码来解决图像压缩,哈夫曼是对rgb的元数据进行变频压缩而WebP编码是通过预测技术对图片压缩。WebP 压缩使用的图像编码方式与 VP8 视频编码对关键帧压缩方式相同,换句话解释:Google将视频编码技术搬到了图片上 形成了Webp编码格式。再详细不说了,就偏离主题了,今天的主题是apk

2020-10-26 11:01:15 416

转载 Android MMKV

本文转自微信开发团队凌国的分享。原文MMKV 是基于 mmap 内存映射的移动端通用 key-value 组件,底层序列化/反序列化使用 protobuf 实现,性能高,稳定性强。从 2015 年中至今,在 iOS 微信上使用已有近 3 年,其性能和稳定性经过了时间的验证。近期已移植到 Android 平台。在腾讯内部开源半年之后,得到公司内部团队的广泛应用和一致好评。现在一并对外开源:https://github.com/tencent/mmkv欢迎 Star、提 Issue 和 PR。.

2020-09-30 10:06:56 5307

转载 java的单例模式,为什么需要volatile

对于java的单例模式,正确的代码应该为:public class TestInstance { private volatile static TestInstance instance; public static TestInstance getInstance() { //1 if (instance == null) { //2 synchronized (TestInstance.class.

2020-09-25 10:28:28 109

转载 Android Material 1.2.0使用

前言Android官方为开发者提供了许多丰富的UI控件,Material 组件就是包含了这些控件的一套工具,多数时候使用它可以满足我们日常开发UI的需求,提高效率。目前Android Material 组件已经更新了1.2.0稳定版,赶紧来了解一波。导入依赖,就可以开始了。implementation 'com.google.android.material:material:1.2.0'1MaterialButton我们平时写布局,当遇到按钮需要圆角、或者描边等,通常的方法是新建

2020-09-16 11:15:48 3944

转载 Android Context的理解

https://www.jianshu.com/p/492ec35ea552

2020-09-14 09:36:27 92

原创 Java 类加载到虚拟机过程

程序员写好的类加载到虚拟机执行的过程是:当一个classLoder启动的时候,classLoader的生存地点在jvm中的堆,然后它会去主机硬盘上将A.class装载到jvm的方法区,方法区中的这个字节文件会被虚拟机拿来new A字节码(),然后在堆内存生成了一个A字节码的对象,然后A字节码这个内存文件有两个引用一个指向A的class对象,一个指向加载自己的classLoader...

2020-08-19 15:01:15 160

原创 Android webview优化

直接new WebView并传入application context代替xml里面声明以防止activity引用被滥用,能解决90+%的WebView内存泄露web =new WebView(getcontext.getApplicationContext());xxx.addView(web)销毁时if(web!=null){web.setWebViewClient(null)web.setWevChromeClient(null)web.loadDataWithBaseUr

2020-08-05 15:24:32 119

原创 Android MeasureSpec简介

MeasureSpec表示的是一个32位的整型值,它的高2位表示测量模式SpecMode,低30位表示某种测量模式下的规格大小SpecSize。MeasureSpec是View类的一个静态内部类,用来说明如何测量这个view

2020-08-03 14:36:57 130

原创 Android View介绍

ViewRoot对应于ViewRootImpl类,它是连接WindowManger和DecorView的纽带,View的三大流程均是通过viewRoot完成的。在ActivityThread中,当Activity对象被创建后,会将DecorView添加到Window中,同时会创建ViewRootImpl对象,并将ViewRootImpl对象和DecorView建立关联View的整个绘制流程可以分为以下三个阶段:measure(view的大小)、layout(view的位置)、draw(绘制)...

2020-08-03 14:30:01 157

原创 Android 在Activity中获取某个View的宽高

1、onWindowFocusChanged当Activity的窗口得到焦点和失去焦点时均会被调用一次如果频繁的进行onResume和onPause,那么onWindowFocusChanged也会被频繁调用2、view.post(runnable)通过post可以将一个runnable投递到消息队列的尾部,然后等待Looper调用次Runnable的时候,View已经初始化好了3、ViewTreeObserve当view树的状态发生改变或者view树内部的view可见发生变化时,.

2020-08-03 14:18:57 349

转载 Android RecyclerView 性能优化

数据优化分页拉取远端数据,对拉取下来的远端数据进行缓存,提升二次加载速度;对于新增或者删除数据通过 DiffUtil 来进行局部刷新数据,而不是一味地全局刷新数据。布局优化减少过渡绘制减少布局层级,可以考虑使用自定义 View 来减少层级,或者更合理地设置布局来减少层级,不推荐在 RecyclerView 中使用 ConstraintLayout,有很多开发者已经反映了使用它效果更差,相关链接有:Is ConstraintLayout that slow?、constraintlayout

2020-08-03 14:08:18 386

转载 Android 网络拦截器

https://blog.csdn.net/qq_38499859/article/details/82355954

2020-07-21 11:18:27 677

转载 Android 网络请求拦截器

https://blog.csdn.net/qq_38499859/article/details/82355954

2020-07-21 10:47:37 1732

转载 Android ViewPager.PageTransformer

https://www.jianshu.com/p/1cb7cd31fa65

2020-07-17 10:53:44 111

原创 Android View定位子View

public int traverseViewGroup(View view) { int viewCount = 0; if (null == view) { return 0; } if (view instanceof ViewGroup) { for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) { ...

2020-06-30 12:30:55 330

转载 Android 优化

https://blog.csdn.net/carson_ho/article/details/79549417

2020-06-30 12:30:39 60

转载 Android measurespec的组成

一个MeasureSpec封装了父布局传递给子布局的布局要求,每个MeasureSpec代表了一组宽度和高度的要求。一个MeasureSpec由大小和模式组成。它有三种模式:[color=darkred]UNSPECIFIED[/color](未指定),父元素不对子元素施加任何束缚,子元素可以得到任意想要的大小;[color=red]EXACTLY(完全)[/color],父元素决定子元素的确切大小,子元素将被限定在给定的边界里而忽略它本身大小;[color=red]AT_MOST(至多)[/col

2020-06-27 23:07:10 143

转载 Android Viewgroup和View承担角色的区别

一般来说,开发Android应用程序的UI界面都不会直接实用View和ViewGroup,而是使用这两大基类的派生类。View派生出的直接子类有:AnalogClock,ImageView,KeyboardView, ProgressBar,SurfaceView,TextView,ViewGroup,ViewStubView派生出的间接子类有:AbsListView,AbsSeekBar, AbsSpinner, AbsoluteLayout, AdapterView<T ext...

2020-06-27 22:45:28 152 1

转载 Android View绘制事件的传递顺序

当触摸屏幕时会产生一个Touch事件,所谓的事件传递机制就是将这个Touch事件分配给谁来处理的过程,系统将Touch事件封装成了MotionEvent。触摸事件是在触摸屏幕时产生的,通常我们与手机交互的屏幕是一个Activity,当触摸屏幕时会调用Activity的dispatchTouchEvent(MotionEvent event),这里需要注意的是触摸屏幕时并不一定会执行Activity的dispatchTouchEvent(),比如说在Dialog、PopupWindow上触摸屏幕它们调用的

2020-06-27 22:31:20 228

转载 Android事件分发机制的传递顺序和流程

结论:无论是View还是ViewGroup,不管他是DispatchTouchEvent还是onTouchEvent方法,方法返回true、返回false的处理逻辑都是一样的,只是调用父类的同名方法的时候处理的逻辑有所不同,View偏重消费、ViewGourp偏重分发简述View的事件传递机制?触摸事件的传递流程是从dispatchTouchEvent开始的,如果不进行人工干预,则事件将会依照View树的嵌套层次从外层向内层传递,到达最内层的View时,就由它的onTouchVent方法处理如果..

2020-06-27 12:41:18 488

原创 Android Handler内存泄漏及解决办法

当使用内部类(包括匿名类)来创建Handler的时候,Handler对象会隐式地持有一个外部类对象(通常是一个Activity)的引用(不然你怎么可能通过Handler来操作Activity中的View?)。而Handler通常会伴随着一个耗时的后台线程(例如从网络拉取图片)一起出现,这个后台线程在任务执行完毕(例如图片下载完毕)之后,通过消息机制通知Handler,然后Handler把图片更新到界面。然而,如果用户在网络请求过程中关闭了Activity,正常情况下,Activity不再被使用,它就有可能在

2020-06-27 11:46:58 373

原创 Android Looper.loop里的无限循环为什么不会ANR

loop中的无限循环是从MessageQueue中去取msg,如果没有msg的话,线程就进入等待阻塞状态,也就是进入休眠状态,释放CPU资源,等有消息的话,线程就会被唤醒。

2020-06-27 11:40:46 196

转载 Android消息机制

Android UI是线程不安全的,如果在子线程中尝试进行UI操作,程序就有可能会崩溃,因为在ViewRootImpl.checkThread对UI操作做了验证,导致必须在主线程中访问UI,但Android在主线程中进行耗时的操作会导致ANR,为了解决子线程无法访问UI的矛盾,提供了消息机制 Android消息机制主要指Handler的运行机制,Handler的运行需要底层的MessageQueue和Looper的支撑。MQ即消息队列,存储消息的单元,但并不能处理消息,这时需要Looper,它会无限循环

2020-06-27 11:37:11 98

转载 Fragment与Activity通信方式

https://blog.csdn.net/zsp765098084/article/details/80901582

2020-06-27 10:26:40 152

原创 Android Fragment回退栈

addToBackStack(tag); 将Fragment添加到回退栈中 popBackStack(); 清除回退栈中栈顶的Fragment popBackStack(String tag, int i ); 如果i=0,回退到该tag所对应的Fragment层 如果i=FragmentManager.POP_BACK_STACK_INCLUSIVE,回退到该tag所对应的Fragment的上一层 popBackStackImmediate 立即清除回退栈中栈顶Fragment getB

2020-06-27 10:15:49 220

原创 Android Fragment生命周期

fragment被创建的时候,经历包含onAttach、onCreate、onCreateView、onActivityCreated方法;fragment对用户可见的时候,经历包含onStart、onResume方法;fragment进入“后台模式”的时候,经历onPause、onStop方法;fragment被销毁了(或者持有它的activity被销毁了),经历包含onPause、onStop、onDestroyView、onDestroy、onDetach方法;并且可用onCreate、onCre..

2020-06-27 10:10:10 319

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除