首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

一个简单的页面加载管理类(包含加载中,加载失败,数据为空,加载成功)

在最近公布的比赛框架中,发现了页面加载管理类,觉得挺有用的,所以做个简单的笔记。 什么是页面加载管理类呢?...我们一般在写网络请求的时候,如果不涉及什么MVP,或者别的,就一个简单网络请求,然后再成功的结果里刷新View,请求过程中总不能白屏吧,所以有些人可能会让转一个圈,或者显示加载中的布局,然后等成功后再隐藏掉...{ /**加载中的view*/ private View loadingView; /**加载失败的view*/ private View errorView; /**加载数据为空的view...*/ STATE_SUCCESS(1),/*加载成功的状态*/ STATE_ERROR(2),/*加载失败的状态*/ STATE_EMPTY(3);/*加载数据为空的状态*/ private...加载中 Loading...

1.2K40

【Android 逆向】启动 DEX 字节码中的 Activity 组件 ( 使用 DexClassLoader 获取组件类失败 | 失败原因分析 | 自定义类加载器没有加载组件类的权限 )

文章目录 一、使用 DexClassLoader 获取组件类失败报错 二、失败原因分析 一、使用 DexClassLoader 获取组件类失败报错 ---- 在上一篇博客 【Android 逆向】启动...DEX 字节码中的 Activity 组件 ( DEX 文件准备 | 拷贝资源目录下的文件到内置存储区 | 配置清单文件 | 启动 DEX 文件中的组件 | 执行结果 ) 中 , 尝试启动 DEX 字节码文件中的...组件类失败了 ; 其中的最主要原因是 , 类加载器的双亲委派机制 , 加载 Android 组件类需要使用系统指定的类加载器 , 这些类加载器设置在 LoadedApk 实例对象中 , 并且这些类加载器只能从特定位置加载字节码文件...中的 LoadedApk 中的类加载器 , 将原来的 LoadedApk 中的类加载器设置为新的父节点类加载器 ; 插入类加载器 : 基于双亲委派机制 , 只要将我们自定义的类加载器插入到系统类加载器之上就可以..., 在 组件类加载器 和 最顶层的启动类加载器之间插入自定义的 DexClassLoader 类加载器即可 ;

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

    Android中的热修复

    类加载方案 - Tinker、QZone 利用Android中类加载机制中的dexElements,将修复之后的dex文件放置到dexElements前面,屏蔽掉有问题的dex文件的加载,从而实现热修复的功能...如上图这一过程发生在准备补丁apk的过程中,补丁生成好之后,内部会包含java的class类classes.dex文件、so的打包文件library.so、补丁资源文件; 2....动态加载tinker_classN.apk进行dex插队,从而实现热修复功能,资源resource.apk通过反射机制,替换Application的Context中assetManager实现资源文件更新...Tinker会创建一个TinkerClassLoader类加载器,在这个类加载器中尝试加载class(loadClass),要是TinkerClassLoader加载不到class文件,会将加载任务提交到...在Android10上禁止了dex文件的动态加载,所以无法对基准版本和patch文件的dex进行合并优化,从而无法实现类替换的功能,Tinker针对Android10,通过反射机制PackageManagerService

    2K10

    Android 10.0后创建文件createNewFile()和创建文件夹mkdirs()均失败解决方案

    昨天往项目中添加Android自定义异常捕获的工具类时(参考Android自定义捕获Application全局异常)碰到一件很诡异的事情,createNewFile一直报no such file or...directory,往前追发现是mkdir失败了(mkdirs也一样fail),网上搜了很多都说是AndroidManifest.xml中没有配置读写sd卡的权限(实际上我已经配置了),最后才定位到是android10...但是Android10之后Google默认不允许随意创建文件夹。这是因为Android10及之后将执行分区存储,只能操作Google规定的自己应用目录下的文件,所以要对之前的应用数据进行迁移。...好在Android10是个过渡期,开发者可以使用下面三种解决方式来暂时忽略分区存储。但是Android11将强制执行分区存储。所以在Android10的时候就先对自己之前的数据做迁移吧。...解决方法有三个: 1.使用Android规定的文件夹做操作 2.将gradle中的编译环境,SDK的版本号修改到29以下 3.清单文件加入下面这句停用分区存储即可随意创建文件夹 //停用分区存储

    3.3K40

    Android 10 和Android 11的适配

    一、 私有目录下资源访问 存在这样一个场景:我们要分享一张图片到qq或者微信,首先第一步是要是得到这个bitmap(通过本地生成或者网络加载),然后存储到本地sd卡上,最后把存储的图片的绝对路径传给qq...在以上的场景中,涉及到了这些关键点: 把图片存储到sd卡 把绝对路径path传递给qq或者微信 1.1 直接访问sd卡的根目录 通过FileOutPutStream来完成,在Android10以下都没问题...具体的适配逻辑参考篇头的文章~ 二、公共目录下资源访问 Google建议我们采用 mediaStore 或者 SAF 去访问。...在Android10 上公共目录下的图片无法通过file:// 格式去访问,提示找不到路径。如glide加载、图片选择库、裁剪框架等等都会收到影响。...因为,Android10的设备还是以Android10的兼容模式运行的。所以要改成true。

    1.4K41

    干货 | 携程Android 10适配踩坑指南

    :菜单>Refactor > Migrate to AndroidX(如果迁移失败,就需要重复上面1,2,3,4步手动去修改迁移) ?...注意: 使用AS迁移工具并不能完全修改完毕,需要手动修改 support包名涉及到资源修改,切记检查资源中的类路径 二、分区存储 2.1 背景介绍 为了更好的保护用户数据并限制设备冗余文件增加,...2.3.3 File Path路径访问受影响接口 开启分区存储新特性, Andrioid 10不能够通过File Path路径直接访问共享目录下资源,以下接口通过File 路径操作文件资源,功能会受到影响...ErrorCode.INIT_ERROR_DEVICE_NOSUPPORT){//1008612,不支持的设备 }else if (code == ErrorCode.INIT_ERROR_LOAD_CONFIGFILE){//1008613,加载配置文件失败...信息将会延迟返回,获取数据可能在异步线程,取决于设备 }else if (code == ErrorCode.INIT_HELPER_CALL_ERROR){//1008615,反射调用失败

    3.3K77

    Android Glide加载网络图片不显示,但用网页打开又正常显示

    前言 最近做Demo比较多,之前在搭网络框架的时候遇到了图片加载的问题,因为我以前的框架中加载网络图片是没有问题,这次居然出问题,但是其实也不难解决吧。...google() jcenter() mavenCentral()//新增 } 然后是模块的build.gradle下的dependencies中添加...:compiler:4.11.0' ② 网络权限与Android版本 既然是加载网络图片,那就肯定要有网络访问权限, 在AndroidManifest.xml中增加 <uses-permission...③ 继承AppGlideModule 新建一个MyAppGlideModule类,继承AppGlideModule,并增加@GlideModule注解,即可,当Glide加载图片时会自动调用这个类,你不用管它...* 为了解决这个异常提示特意新建了一个工具类,只要继承了AppGlideModule,在加载图片的时候就会自己用到的 */ } 通过这几步操作基本解决问题,起码我遇到的问题是解决了

    4K20

    Android开发笔记(一百七十四)图像解码器ImageDecoder

    早期的Android只支持三种图像格式,分别是JPEG、PNG和GIF,虽然这三类图片都能在ImageView上显示,但对于GIF格式来说,图像视图仅能显示动图的初始画面,无法直接播放动画效果。...不支持动画效果) 3、支持有损压缩;(PNG和GIF不支持有损压缩,因此它们的图片体积较大) 正因为WebP与HEIF如此优秀,所以它们在手机上愈加流行,从Android9开始便支持浏览这两种格式的图片,从Android10...setImageDrawable,设置图像视图的图形对象; 其中第一步的createSource方法允许从多处来源读取图像信息,包括但不限于: 1、来自存储卡的File对象; 2、来自系统相册的Uri对象; 3、来自资源图片的图形编号...; 4、从输入流获取的字节数组; 举个例子,现在准备通过ImageDecoder加载相册中的某张图片,此时从系统媒体库得到Uri类型的图片路径,则详细的图像加载代码示例如下: // 利用Android9.0...它主要在如下两个方面做了增强: (1)调用带两个参数的decodeDrawable方法,此时输入第二个监听器参数,在监听器中可以获得图像的媒体类型,以及该图像是否为动图; (2)判断解码得到的图形对象是否为

    1.7K10

    大疆一面,说说你理解的运行时加载?

    与编译时链接不同,这种方式允许按需加载功能模块,从而提高资源利用率并增强软件的可扩展性。...减少程序启动时间,因为程序仅在需要时加载所需的库文件,使用运行时加载可以减少启动时所需加载库的数量。 便于软件更新,只需替换动态库文件,无需重新编译整个程序。...解析函数符号:利用库句柄查找并获取动态库中函数或变量的地址,例如 Windows 使用 GetProcAddress,类 Unix 系统使用 dlsym。...调用库功能:获取函数地址后,程序便可调用动态库中的函数来实现特定功能。 释放动态库:使用 FreeLibrary(Windows)或 dlclose(类 Unix)释放资源,避免内存泄漏。...例如: 打开文件失败:这可能的原因是库文件不存在、路径错误或权限不足。此时需要确认库文件的路径,确保其存在且可访问。 加载函数失败:这可能是因为函数名错误、库文件中不存在该函数、函数未导出。

    6800

    Android 开发 - 网络图片加载库 Fresco 的使用。

    概述 Fresco 是 facebook 的开源类库,它支持更有效的加载网络图片以及资源图片。它自带三级缓存功能,让图片显示更高效。 介绍 Fresco 是一个强大的图片加载组件。...Fresco 中设计有一个叫做 image pipeline 的模块。它负责从网络,从本地文件系统,本地资源加载图片。为了最大限度节省空间和CPU时间,它含有3级缓存设计(2级内存,1级文件)。...这时提供一个图片,加载失败时,会显示这个图片(而不是失败提示图片),提示用户点击重试。...在ControllerBuilder 中如下设置: .setTapToRetryEnabled(true) 指定加载失败图片和点击重新加载 在xml中指定加载失败后提示重试的图片 fresco:retryImage...(true) 加载失败时,image pipeline 会重试四次;如果还是加载失败,则显示加载失败提示图片。

    2K00

    SpringBoot的@Conditional使用

    此外,我们可能只想在某些外部资源可用时才加载某些bean ,否则它们将无法工作。例如,我们只想logback.xml在类路径中找到文件时配置我们的Logback记录器。...如果我们向单个@Bean定义添加条件,则仅在满足条件时才加载此bean: @Configuration class ConditionalBeanConfiguration { @Bean @...@ConditionalOnResource 如果我们想根据类路径上某个资源可用的事实加载bean,我们可以使用@ConditionalOnResource: @Configuration @ConditionalOnResource...(resources = "/logback.xml") class LogbackModule { ... } 如果在类路径中配置了logback文件就加载LogbackModule。...它们将自动与逻辑“AND”运算符组合,这样如果至少有一个条件失败,则不会加载bean: @Bean @ConditionalOnUnix @Conditional(OnWindowsCondition.class

    2.2K10

    由easyui的tab在ie下渲染失败,发现的一个有意义的问题

    ,我想了一下当时也觉得不会影响,但是实在没有别的思路了,就死马当活马医,试试看呗,于是将filter中修改的代码注释掉,在运行代码,结果发现问题没有了,tab控件正常加载!...好奇怪啊,filter中能有什么东西会导致easyui的tab控件仅仅在ie下加载失败呢?...后来细细想了一下,也查询了相关资料,终于得出了答案: filter中的那段配置代码的内容是使用spring的CharacterEncodingFilter类对请求进行UTF8的编码,并且配置了forceEncoding...html页面都会在标签中加入这个属性,当IE浏览器解析response头中的内容准备使用utf8来解析页面的时候,如果发现meta中也配置了charset,那么就会使用meta中的编码,如果没有发现该配置...,就使用response头中content-type的charset指定的编码,所以就导致了easyui的tab控件仅仅在ie下加载失败的问题。

    68630

    【愚公系列】《微信小程序与云开发从入门到实践》033-页面尺寸控制与自定义字体

    2.在小程序中使用自定义字体 2.1 引入自定义字体的必要性 在小程序中,默认情况下会使用系统的默认字体。若应用有特殊的需求(如游戏类应用),可能需要引入自定义字体以契合应用的风格。...("字体加载失败:", error); } }); global: true:表示字体是否在整个小程序中全局生效。...,false 或不设置表示仅在当前页面有效 family 字符串 设置自定义字体的名称。...字体名称将作为 font-family 在 CSS 中使用 source 字符串 设置字体资源的 URL 地址,支持 TTF 或 WOFF 格式 success 函数 字体加载成功后的回调函数...fail 函数 字体加载失败后的回调函数 complete 函数 字体加载完成后的回调函数 style 字符串 设置字体的样式(如 normal,

    20210

    Spring条件注解@Conditional,SpringBoot中组合条件你知道吗?

    首发地址:Spring条件注解@Conditional,SpringBoot中组合条件你知道吗?...提供合理的日志记录,以帮助用户诊断要加载的类。...仅仅在当前上下文中存在某个对象时,才会实例化一个Bean @ConditionalOnClass 某个class位于类路径上,才会实例化一个Bean @ConditionalOnExpression...true,才会实例化一个Bean) @ConditionalOnResource 如果我们要加载的 bean 依赖指定资源是否存在于 classpath 中,那么我们就可以使用这个注解 @ConditionalOnJndi...只有指定的资源通过 JNDI 加载后才加载 bean @ConditionalOnCloudPlatform 只有运行在指定的云平台上才加载指定的 bean,CloudPlatform 是 org.springframework.boot.cloud

    1K20

    Spring条件注解@Conditional,SpringBoot中组合条件你知道吗?

    提供合理的日志记录,以帮助用户诊断要加载的类。...其实用法都大同小异,看了源码以后发现原理很简单,这里简单归纳下用法: 除了自己自定义Condition之外,Spring还提供了很多Condition给我们用 @ConditionalOnBean 仅仅在当前上下文中存在某个对象时...Bean @ConditionalOnMissingBean 仅仅在当前上下文中不存在某个对象时,才会实例化一个Bean @ConditionalOnMissingClass 某个class类路径上不存在的时候...bean 依赖指定资源是否存在于 classpath 中,那么我们就可以使用这个注解 @ConditionalOnJndi 只有指定的资源通过 JNDI 加载后才加载 bean @ConditionalOnCloudPlatform...只有运行在指定的云平台上才加载指定的 bean,CloudPlatform 是 org.springframework.boot.cloud 下一个 enum 类型的类,大家可以打开自行看看 到这里,

    85950

    现代图片性能优化及体验优化指南 - 图片资源的容错及可访问性处理

    图片资源,在我们的业务中可谓是占据了非常大头的一环,尤其是其对带宽的消耗是十分巨大的。...由于有语义的图片使用 展示,它的一个好处在于,当图片加载失败的时候,可以触发元素的 onerror 事件,我们可以有效的利用这一点,对图片进行异常处理。...图片的异常处理 当图片链接挂了,加载失败了,我们比较好的处理方式应该是怎么样呢? 处理的方式有很多种。在张鑫旭老师的这篇文章中 -- 图片加载失败后CSS样式处理最佳实践 有一个不错的实践。...核心思路为: 利用图片加载失败,触发 元素的 onerror 事件,给加载失败的 元素新增一个样式类 利用新增的样式类,配合 元素的伪元素,在展示默认兜底图的同时,还能一起展示...同时,我们也应该能看到,前端技术仅仅在这一小个领域,都在不断的迭代创新。虽然很难,还是需要不断充实自己跟上新的潮流。共勉。

    72610

    AndroidQ兼容性适配指南

    从后台启动 Activity 的限制 创建高优先级通知 Android10中, 当App无前台显示的Activity时,其启动Activity会被系统拦截, 导致启动无效。...Android10适配的时候可以通过requestLegacyExternalStoragec使用兼容模式; Android11适配可以通过preserveLegacyExternalStorage让Android10...权限校验失败") } } } } 使用自定义DocumentsProvider 如果你希望自己应用的数据也能在documentsui中打开,可以自定义一个...默认情况下,MediaStore 接口会将非媒体类文件保存到Downloads目录下,推荐APP指定一级目录为Documents。...针对只有应用自己访问并且应用卸载后允许删除的文件,需要迁移文件到应用私有目录文件,可以通过 File path 方式访问文件资源,降低适配成本。

    7.1K30
    领券