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

为什么我的子线程更新了 UI 没报错?借此,纠正一些Android 程序员的一个知识误区

半小时前,我的 XRecyclerView 群里面,一位群友私聊我,问题是: 为什么我的子线程更新了 UI 没报错? 我叫他发下代码我看,如下,十分简单的代码。...那么这样来说,按照我们被一直灌输的原理: 子线程不能刷新UI,上面这段代码妥妥地爆错啊。 而我要说的是: 上面的代码不一定爆错,它还会稳稳的顺利执行。 你十分怀疑了? 你可以尝试下。...原因 在看到他发给我的代码,onCreate 里面的部分,一切已经明了,这也是我之前面试几年经验的人设过的坑。下面我直接讲原因,源码分析那些你们自己去看吧,你应该去看。...如果你的子线程更新代码在满足下面的条件下,那么它可以顺利运行: 修改应用层的 viewRootImpl.java 源码,解除限制 把你更新代码写在 onResume 之前,例如 onCreate 里面...修改验证 --- 抛出错误 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState

1.3K70

【Android 逆向】arm 汇编 ( 使用 IDA 解析 arm 架构的动态库文件 | 使用 IDA 打开 arm 动态库文件 | 切换 IDA 中汇编代码显示样式 )

文章目录 一、使用 IDA 打开 arm 动态库文件 二、切换 IDA 中汇编代码显示样式 一、使用 IDA 打开 arm 动态库文件 ---- 分析 Android SDK 中的 arm 架构的动态库...动态库 ) 博客 ; 参考 【Android 逆向】x86 汇编 ( 使用 IDA 解析 x86 架构的动态库文件 | 使用 IDA 打开动态库文件 | IDA 中查找指定的方法 ) 博客 , 打开 D...打开操作是一样的 ; 查找 malloc 函数 , 打开 malloc 函数对应的汇编代码 ; 二、切换 IDA 中汇编代码显示样式 ---- IDA 打开文件后 , 默认以图形形式显示汇编代码 ;...右键点击 " IDA View-A " 空白处 , 弹出一个菜单 , 选择 " Text View " 选项 即可查看汇编语言的文本代码 ; 汇编的文本代码 : 在 " IDA View-A..." 显示汇编代码时 , 右键弹出菜单 , 选择 " Graph view " , 即可显示开始时的图形样式的汇编语言代码 ;

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

    项目延期半年,我被软件外包坑惨了!

    MVP 计划是发布 iOS 和 Android App。 我有些开发经验,但从未开发过 App。从头开始学也不现实,于是打算雇佣外部软件开发人员来构建 App。错误就从这个决定开始。...程序只求可运行 举例来说,我们发现的一个 Bug 是,如果用户的联系人超过 50 个,就只有前 50 个会在 App 中显示,其他的都无法访问。...它可以帮助未来的开发人员了解为什么要做出某些设计决策,特定的功能是如何构建的,以及如何构建其他类似的特性。 出于这个原因,在合同谈判中,我特别坚持最后的交付物应该是一个 Git 存储库。...遗憾的是,在交付源代码的时候,他们只给我们发送了一个压缩文件,其中包含所有源代码和生成的文件。 我提醒他们,根据合同,他们应该给我们一个 Git 存储库。...事实上,在他们发送的压缩文件中,我甚至看到了一个“.git”目录——表明他们在开发时确实在用 Git。

    1.6K40

    2018春招总结

    (半个小时):   介绍一下自己      介绍一下最近的一个项目      讲一下内存泄漏怎么优化的      android两种虚拟机ART和Dalvik      讲一下ipc有几种形式...)   自我介绍      介绍工作室团队      当小组长的经历      tcp握手挥手,为什么      线程的生命周期      io原理      集合相关hashmap,set...      工作室的招新过程      在工作室招新过程中,我是怎么准备的      一天的规划      怎么学习的      BAT为什么选择腾讯      未来3-5年职业规划   ...  有没有女朋友      家里情况      为什么选择Android这个方向      为什么选择腾讯的mig部门      有什么问题要问我    华为(春招)   接下来是华为的面试,...从大二开始,觉得招聘对于我来说太远,结果大三春节还没开始,已经有各大公司开始内推呀,其实这个时候春招已经拉开帷幕,在这过程中,经历过失落开心,经历过了,即使最后失败也不觉得后悔,最后我的春招终于结束了!

    1.2K50

    提示 Data Binding 库使用的经验教训

    过去的几年我一直在 Android 开发中使用 data binding 库,本文会写出我这一路上了解到的与它有关的一些内容细节。...除非你把代码组织得非常好,否则你可能会有一个包含所有适配器方法的大文件,这与代码内聚和解耦原则相违背。 你需要使用 instrumentation 工具来做测试。...这里有一个我们为 android:drawable 重新实现了标准 ImageView adapter 的样例: 遗憾的是,视图并不总是能够显示我们需要检查的状态。...这是一个展示 Tivi(链接)中类的样例: 你可以看到它仅仅是一个简单的数据类,包含了 UI 需要在一个 TV 秀界面上显示的所有细节 UI 元素。...如果你的 UI 状态不经常变化(可能在创建时有一些次)并且变量数量较少时,我会推荐使用此模式。 我个人一直在布局中使用单个变量,传入我的 ViewState 实例,并依赖于我们的视图绑定合理地运行。

    69720

    Data Binding 库使用的经验教训

    过去的几年我一直在 Android 开发中使用 data binding 库,本文会写出我这一路上了解到的与它有关的一些内容细节。...除非你把代码组织得非常好,否则你可能会有一个包含所有适配器方法的大文件,这与代码内聚和解耦原则相违背。 你需要使用 instrumentation 工具来做测试。...这里有一个我们为 android:drawable 重新实现了标准 ImageView adapter 的样例: 遗憾的是,视图并不总是能够显示我们需要检查的状态。...这是一个展示 Tivi(链接)中类的样例: 你可以看到它仅仅是一个简单的数据类,包含了 UI 需要在一个 TV 秀界面上显示的所有细节 UI 元素。...如果你的 UI 状态不经常变化(可能在创建时有一些次)并且变量数量较少时,我会推荐使用此模式。 我个人一直在布局中使用单个变量,传入我的 ViewState 实例,并依赖于我们的视图绑定合理地运行。

    42520

    项目延期半年,我被软件外包坑惨了!

    多年前,年轻且天真的我决定与他人一起创业,但同时还要兼顾我们的全职工作。我负责技术开发,另一个创始人负责业务。我们的 MVP 计划是发布 iOS 和 Android App。...程序只求可运行 举例来说,我们发现的一个 Bug 是,如果用户的联系人超过 50 个,就只有前 50 个会在 App 中显示,其他的都无法访问。...遗憾的是,在交付源代码的时候,他们只给我们发送了一个压缩文件,其中包含所有源代码和生成的文件。 我提醒他们,根据合同,他们应该给我们一个 Git 存储库。...事实上,在他们发送的压缩文件中,我甚至看到了一个“.git”目录——表明他们在开发时确实在用 Git。...第二天,他们很快就给我们发送了一个 Git 存储库,其中只有一次提交,而里面的文件与前一天发送给我们的 zip 文件完全相同。

    93730

    OkHttp使用详解

    的博客,博客地址在此**Android网络请求 ------ Volley的使用** 那么既然Google提供了网络请求的框架,我们为什么还要使用OkHttp呢,原来是volley是要依靠HttpCient...的Get请求步骤就这么4步,但是当你试图打开应用加载数据,可是发现并没有加载到数据,这是一个简单但是我们常犯的错误....由于我们使用的是OkHttp3所以我们还需要再导入一个包okio.jar才能继续下面的内容,我们需要在模块的Gradle文件中添加如下代码,然后同步一下项目即可 compile 'com.squareup.okio...我们一直都说,用户体验很重要,当我们下载的文件比较大,而网速又比较慢的时候,如果我们只是在后台下载或上传,没有给用户显示一个进度,那将是非常差的用户体验,下面我们就将简单做一下进度的显示,其实非常简单的...显示文件下载进度 这里只是演示,我只是把进度显示在一个TextView中,至于进度的获取当然是在我们的回调函数onResponse()中去获取 (1)使用response.body().contentLength

    11.8K40

    在 Android Instant App(安卓即时应用程序)中启用 ProGuard (混淆)

    我建议在处理 ProGuard(混淆)错误前熟读 Android Studio 文档,ProGuard (混淆)手册 以及我的上一篇文章 。...' } } ... } 在上面的代码片段中,我选择了一个名为 aia-proguard-rules.pro 的文件用于我的 Android Instant App(安卓即时应用程序)专用...有时我们偶尔会使用 Android 资源中的类,例如从 XML 布局文件中实例化一个小部件,但实际上从未实际从代码中引用该类。...它为资源文件和 Android Manifest 中使用的类生成所需的 ProGuard(混淆)规则,但在构建即时应用程序的情况下,它们最终可能会出现在错误的模块中。...请记住通过运行应用程序并检查所有可能的情况来彻底进行测试,因为某些错误只能在运行时发生。 ---- 希望本指南能够让你更好地理解为什么 ProGuard(混淆)可以使你的即时应用程序崩溃。

    2.6K30

    我闻到了 Android AppCompat 代码的坏味道!

    Google 从 Api 19 到 21 对 Android 做了什么丧尽天良的事儿,我胡乱写的那些代码 N5 大概也许都不认识了吧,时过境迁,岁月不饶人啊。...想必也是 Android Support 框架的某些代码写得不是怎么漂亮,不然怎么会有这等事情! ?...我们看到前面截图中,错误显示是在某一处的代码通过反射去获取 ActivityCompatApi23 的内部类的时候,出现的错误,不难想到,由于 Api 19 没有 SharedElementCallback...好吧,我发现出错的调用是在一个 AppCompatActivity 的子类里面,我写了这么一段代码: this::class.allSupertypes.flatMap { it.arguments }...好吧,出来就出来了,我也没办法把你送回去,那我们来分析一下,为什么我只是想要一个父类,结果却牵扯出来父类里面的一个静态内部类的父类找不到的问题?

    64510

    Android视图绑定ViewBinding的使用

    概述 在我们的开发过程中,需要获取XML布局文件中的ViewId,以便其赋值显示,我们习惯使用findViewById进行操作,可这样会导致很多的模版代码出现。...所以其主要解决如何安全优雅地从代码中引用到XML layout文件中的view控件的问题。直到目前为止,Android构建用户界面的主流方式仍然是使用XML格式的layout文件。...,例如不小心将一个TextView错误的赋值给一个Button变量,都会报错,这一错误很容易出现,关键在错误还出现在运行时,而不是编译时!...就是在我们访问那个View的时候它不存在。为什么会出现这种情况呢?例如不小心使用了错误的Id,或者访问的时候那个view还不存在。...使用了错误Id这个估计大家都有此类经历,但是访问时候那个view不存在怎么理解呢?

    2.7K20

    Android视图绑定ViewBinding的使用

    概述 在我们的开发过程中,需要获取XML布局文件中的ViewId,以便其赋值显示,我们习惯使用findViewById进行操作,可这样会导致很多的模版代码出现。...所以其主要解决如何安全优雅地从代码中引用到XML layout文件中的view控件的问题。直到目前为止,Android构建用户界面的主流方式仍然是使用XML格式的layout文件。...TextView错误的赋值给一个Button变量,都会报错,这一错误很容易出现,关键在错误还出现在运行时,而不是编译时!...就是在我们访问那个View的时候它不存在。为什么会出现这种情况呢?例如不小心使用了错误的Id,或者访问的时候那个view还不存在。...使用了错误Id这个估计大家都有此类经历,但是访问时候那个view不存在怎么理解呢?

    2.6K10

    android sdk根目录,Android SDK位置

    41:41Z 43 votes 你有一个文件夹内容的屏幕吗?...:( return null; } 我需要这个,因为我正在编写一个C#程序的扩展,以便与Android Studio / Gradle一起使用。 希望其他人会发现这种方法很有用。...这种情况发生在我身上,因为Windows操作系统找不到Android Studio SDK路径所需的SDK文件夹,并通过显示隐藏文件和文件夹解决了这个问题,这使我能够完成默认的SDK安装路径位置。.... \ Local \ Android ** 现在,您应该看到显示SDK父目录的文件夹资源管理器。...首次发布时,Android Studio会将最新的Android SDK下载到官方接受的文件夹中 当Android工作室完成下载组件时,您可以从“下载组件”视图日志中复制/粘贴路径,因此您无需键入[用户名

    5.3K20

    HDR视频生态系统纵览

    为什么?因为这个生态系统中的大多数公司都不会谈论它。我从来没有遇到过声称支持PQ10的电视品牌,尽管他们可以做到。那什么是PQ10? 这是没有元数据的HDR10。这可行吗?当然。...明确区分PQ10的生态系统的一部分是编码供应商,这就是为什么你会在该图中找到六个圆圈的原因。 还有更多关于这些格式的信息,但我不会在这里讲。我在“The State of HDR.”中讲到。...我正在考虑未来更新的一个更优雅的解决方案--为每个关键市场提供单独版本的电视品牌图表。...我加入这张图片的原因是为了展示这些工作室的家庭娱乐部门政策的一些有趣差异。 对于家庭电影,目前有三种格式与其相关。...我不是在谈论PC上单个视频文件的芯片或软件包,而是让运营商或流媒体服务提供商同时编码大量频道或文件的产品。这是目前唯一一个产品系列特别提到PQ10的细分市场,因此是额外的圈。

    63831

    求知 | Android资源加载的那些事-小试牛刀

    为什么同一个drawable界面更改了透明度,其他界面也会生效? 如果你对上述问题依然存疑,那本文可能会对你有所帮助。...() 获取当前密度下相应的资源文件,并将其写入到 TypeValue 中;如果不存在资源文件,则直接抛出异常。...---- Tips 知道了 Drawable 会被缓存的知识点,此时就不难解释为什么开发中会遇到同一个 Drawable 更改了透明度,其他界面用到这个 Drawable 的地方也会受到了影响。...至此,关于 Android-Resource 的求知篇正式开始,下一篇我将同大家分析 Resource 的初始化时机以及与 Resource.system() 的区别。...关于我 我是 Petterp ,一个 Android工程师 ,如果本文对你有所帮助,欢迎点赞支持,你的支持是我持续创作的最大鼓励!

    59750

    手刃逆向某款第三方辅助插件

    BBS论坛求助贴 360论坛的相关负责人也是很快的回复了我的帖子,如果这个exe文件有后门的话,那么后续也会有专门人员跟进。 我也是赶紧看了下本地有无额外的TCP连接,并且拉到微步沙箱去看了看。...环境下对upx脱壳 脱掉UPX壳后,再次检查信息,显示该文件有 E language即易语言编写。...拼接机器码 接着有一个自动删除的暗桩,最初就是这里吓得我半死,不过自己单步跟踪过后,发现这个vbs的功能只是删除自身,并不会移动文件到哪里去。...0x03 插件速度优化,实现脱机 我成功找到了获取信息的call,那么我们可以直接将获取信息CALL nop掉,这时会出现未知错误的提示框 未知错误 我们将jnz指令改为jmp后就可以直接跳过未知错误...0x04 分析拓展 在反汇编的文本中,发现了以下内容:异编工作室,百度后没有相关的内容,猜测可能是相应的易语言模块作者或者软件作者工作室的名称。

    80910

    React Native实践有感

    总之,RN一个开发者维护的情况下,那么对开发者的要求是需要兼顾Android和iOS两个平台,这也是为什么说学了RN迟早安卓和iOS都要学。...而且在iOS 14beta版中RealmJS引发了一个crash,导致所有iOS 14beta版的用户都受到影响,虽然说这个crash在iOS 14的beta2迭代中就不存在了,但为了保险起见,我还是决定升级...安全性存在问题RN打包时会把JS代码和资源文件打包成一个js bundle文件,这个bundle文件中就包含了所有编译之后的JS代码,因此一些重要的配置信息如API key、secret等最好不要写在JS...或相应的统计分析平台,将符号化的日志文件转化成更加清晰的堆栈信息,便于我们分析定位问题。...在实践中我发现很多JS端exception都是代码不规范导致的,轻则导致app白屏重则crash,比如从Object取值的时候Object可能是空的,不存在key value。

    2.6K10

    我写了款依赖检查的工具

    ARM lib/armeabi-v7a lib/arm64-v8a x86 lib/x86 lib/x86_64 对于我们工具的检查,只需要遍历获取 32 位 so 的文件名称,然后去查下这个文件在...64 位的目录下存不存在,如果存在,说明该 so 支持,反之不支持,检测效果如下: image.png 3、更安全的导出组件检查 在 Android 12 的适配中,如果 activity、received...和 service 有使用 intent-filter,则必须显示申明 exported 的值,否则应用将无法在搭载 Android 12 或更高版本的设备上进行安装。...当然,你也可以直接查看 demo 输出的报告,我已经给仓库开通了 github pages,html 浏览地址为 https://mrwangqi.github.io/pluginDemo/ 1、接入...尝试过几次在 jitpack 发布 gradle 插件,经常会报莫名的错误,所以,就不打算对外发布插件了,如果想用到自己项目的话,可以发布到 maven local,展开 task 点击 publish

    61830

    Android开发(第一行代码 第二版) 常见异常和解决办法(基于Android Studio)(一)

    (1)可以再Activity的onCreate()方法中加入一段代码,适用于网络请求数据量很小的话,如下 (2)启动一条子线程进行你的网络请求(推荐使用) 10.Android stdio 引用so错误问题...解决办法: (1)在gradle.properties文件里面添加如下代码 android.useAndroidX=true #表示当前项目启用 androidx android.enableJetifier...意思大概是说调用了一个空对象的不存在的方法,但是我的Button明明是存在的啊,为什么会这样呢?...原来是因为在Project中有多个活动,一个MainActivity和其他活动,我这个Button是在其他活动,这里是在OCRActivity中调用的,每个活动都有一个对应的.xml文件,来对里面的组建进行布局...这个小异常也告诉我们在Android开发的时候要兼顾各方面,从活动到布局,再到配置,包括外部包的引入都要统一、匹配,各个活动、组件、之间的调用,以及与系统的交互等等,都要格外细心,甚至代码有时错一个字母

    2.7K11

    Android可穿戴设备世界之旅

    如果您是 Android 爱好者,喜欢玩代码并想用它制作令人惊叹的应用程序,那么让我们为我们的手表构建一些很酷的东西!...因此,无论是开发还是对代码结构有扎实的了解,您都需要对 Android 应用程序开发方面有一定的了解,还需要具备 JAVA 方面的知识。...在圆形和矩形形状之间切换 在创建项目时,我们发现了矩形和圆形磨损设备的 2 种不同的布局名称。在项目结构中,您将在布局文件夹下找到这 2 个布局文件以及一个主 xml 布局文件。...我们将制作一个数学游戏,该游戏将在 60 秒的时间范围内生成随机方程,因此用户将获得分数结果。 设计 首先,我们需要设计适合圆形和方形设备的主布局文件。...; 接下来,我们需要抛出一个按钮事件,该事件将在每次点击时刷新此随机方程。此外,我们还需要将用户输入的答案与其真实答案进行比较。此外,我们需要跟踪正确和错误的答案并计算它们的数量。

    12810
    领券