Android8.0 对重复代码行的处理

Android开发基础技能练习场:从AGP到R8,打造可验证的基本功 Android开发入门容易,但基础不牢会在工具链、构建、UI、Framework等环节频繁踩坑。AGP版本与Android Studio的匹配关系、Gradle报错如could not load compiled classes的排查思路,是每个开发者绕不开的基本功。R8混淆不仅要会配置keep规则,更要理解压缩、优化、混淆、资源收缩的内在原理。UI层面,setColor与透明度对照表、协调布局与Banner联动,细节中藏着大量面试题。Framework机制中,AMS启动流程、PhoneStateListe 阅读详情

问题

public class MainActivity extends AppCompatActivity {
public static String TAG ="TAG";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //四行重复代码
        Log.d(TAG, "onCreate: ");
        Log.d(TAG, "onCreate: ");
        Log.d(TAG, "onCreate: ");
        Log.d(TAG, "onCreate: ");

    }
}

如果用Android8.0系统执行上述代码,会只有两行输出,debug的话四行都会输出。改成for循环的重复输出也是同样的,只输出两行就停止输出了。

问题发现

我在复习RxJava的操作符的时候,测试了这么段代码

Observable.create(new ObservableOnSubscribe<Integer>() {
            @Override
            public void subscribe(ObservableEmitter<Integer> emitter) throws Exception {
                emitter.onNext(1);
                emitter.onNext(2);
                emitter.onNext(3);
            }
        }).map(new Function<Integer, String>() {
            @Override
            public String apply(Integer integer) throws Exception {
                return "result " + integer;
            }
        }).subscribe(new Consumer<String>() {
            @Override
            public void accept(String s) throws Exception {
                Log.d(TAG, s);
            }
        });

按理说应该输出0 1 2 三次,我发现随便怎么搞,在同一线程里,我都无法完整输出。然后我切换线程又可以执行。
然后我就找了半天Rxjava的问题,发现并不是。我发现只要改成不一样的代码就可以执行,而且只要在相同的代码超过两行再插入一行不同的代码,也可以执行,所以我试着把代码移除来在onCreate中执行,发现也是一样的,所以排除了Rxjava的原因。
那难道是编译器原因?我更新了也没用,最后没办法,让朋友帮忙测试下,发现别人的可以,而环境与我不同的只有模拟器他是低于Android8.0的,于是我自己重新装了个7.0的模拟器,可以顺利运行。我又测试了其他几台机器,也是一样。
我有点纳闷了,这难道是Android8.0的优化么,可能是我学识不够。我个人觉得这样的优化未免太激进了,只要相同的代码超过两行就不执行了,这有点扯犊子了,debug下又可以运行。找了很多原因也难找到。

安卓开发:OKHTTP的封装代码--Httplib 1.0(适用于各类比赛) Httplibs是一个基于OkHttp的Android网络请求封装库。它简化了OkHttp的使用,提供了更加便捷、灵活的API接口,适用于各类Android开发比赛和项目。尤其是移动应用开发大赛,该库旨在帮助开发者更加高效地处理网络请求,减少重复代码,提高开发效率。 阅读详情

相关推荐

Android中解决Toast重复显示问题

然而,有时候在某些情况下,Toast消息可能会出现重复显示的问题,这可能会导致用户体验下降。然而,当我们在某些特定的场景下多次调用上述代码时,可能会出现Toast消息重复显示的问题。通过取消之前的Toast或使用Handler延迟显示Toast消息,我们可以解决Android中Toast重复显示的问题。通过以上代码,我们将Toast消息的显示延迟了2秒,确保上一条消息完全消失后再显示下一条消息。通过以上步骤,我们可以确保每次只显示一条Toast消息,避免了重复显示的问题。,用于延迟显示Toast消息。

PixelLancer的博客 686

【android】如何有效的减少重复的代码

重复的代码一直都是可维护性的大敌,重构的重要任务之一也就是要去除掉重复的代码,有效的减少重复代码,可以大大提高软件的扩展性。 在Android开发中,很容易产生重复的代码。因为Android是组件,模板式开发,每个页面都是独立用Activity或Fragment实现,布局文件都是用XML方式去写,所以很容易造成代码的重复,虽然二个页长的差不多,但毕竟是二个Activity,于是就拷一份出来,

u011494050的专栏 4621

Android Camera HAL3 - 开篇词

好久没有写技术文章了,写这类东西需要耗费的精力太多,但是最近工作中频繁会接触到 Camera 的知识,不总结下看来也是对不起我新买的笔记本,这篇就算是稀里糊涂的开篇文章吧。技术类的文章产出总归是要非常慢的,之前写的 OpenMax 和 V4L2 每一篇都耗费了极长的时间,写的过程中会很苦恼,怎么组织自己的语言都感觉没法很好的表达自己的想法,让人忍不住时不时想口吐芬芳。 Camera 基础模块 Ca...

YellowMax 3187

代码重复:搞定代码重复的三个绝招

更多内容关注微信公众号:fullstack888很多同学抱怨业务开发没有技术含量,用不到设计模式、Java 高级特性、OOP,平时写代码都在堆CRUD,个人成长无从谈起。其实,我认为不是这样的。设计模式、OOP 是前辈们在大型项目中积累下来的经验,通过这些方法论来改善大型项目的可维护性。反射、注解、泛型等高级特性在框架中大量使用的原因是,框架往往需要以同一套算法来应对不...

qianshanding0708的博客 2384

Android应用开发实战:MyProject8

Dagger 2通过几个核心概念来实现依赖注入:Component:它是一个接口,用于连接模块(Module)和依赖的提供点。组件中的方法用于提供依赖。Module:包含一组方法,每个方法返回一个依赖或提供一个依赖实例的工厂。Qualifier:用于区分同一类型的多个依赖实例,通常与@Qualifier注解一起使用。Scope:用于定义依赖的生命周期,它是一个注解,如@Singleton。下面是一个简单的模块和组件的定义示例:@Module。

weixin_28949937的博客 297

一个android 文本比对app的实现代码

这是一个android版的beyond comparer, 它的功能是找出两个文本的最大共同子串,其算法思想是LCS, 但我利用Hirschberg 的动态规划算法将存储复杂度由O(n^2)改为O(n), 具体详情请参看我的博文: http://blog.csdn.net/tyler_download/article/details/49820515

Android SurfaceFlinger中的Layer,…

http://blog.csdn.net/DroidPhone/archive/2010/11/11/6002237.aspx http://blog.csdn.net/mfbao01/article/details/6692179   视觉效果 下面几张图片分别表示了不同Layer产生的视觉效果: SurfaceFlinger中的Layer,LayerDim,LayerBlur,Laye

1196

Android8.0画中画(pip)完整DEMO

Android8.0画中画(pip)完整DEMO,无废话。看不懂官方文档的同学来,下载即可运行。

android studio项目改成android.mk编译APP闪退java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader

android9系统android studio项目改成用android.mk编译v7包--APP闪退java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader 原文件在:\vendor\..\package\DVR 打包apk在:\out\target\product\msm8953_64\system\app\DVR 编译到系统后,点击APP 打开就闪退,以下是错误 日志 01-01 00:03:06.678 608 ...

Alex的博客 732

Source_TextSave

基于Tesseract的Android OCR应用程序 博文的演 示 案例

Android8.0系统允许安装未知来源权限

当你的应用适配到8.0后,会检测是否允许未知来源系统,没有打开的话会弹框提示去打开

.NET 8 中 Android 资源生成的改进和变化

所有 Android 应用程序都包含一些用户界面资源。它们通常具有 XML 文件形式,包含用户界面布局、png 或 svg 文件形式的图像和图标以及包含样式和主题等内容的值。请参阅 Google文档以深入了解 Android 资源。Android构建过程的一部分是使用 android sdk 工具aapt2将这些资源编译成二进制形式。为了访问这些资源,android 公开了一个 API,它允许您传递一个整数 id 来检索资源。

MicrosoftReactor的博客 1429

Android中如何优雅的处理重复点击实例代码

问题 有时候有些操作是防止用户在一次响应结束中再响应下一个。但有些测试用户就要猛点,狂点。像这种恶意就要进行防止。 比如在客户端中,一些按钮一般是需要避免重复点击的,比如:购买丶支付丶确定丶提交丶点赞丶收藏等等场景,这些场景短时间内的重复点击会引发一些问题. 下面话不多说了,来一起看看详细的介绍吧 以前的处理方式 可能是采用手动记录最后的点击时间,再通过计算时间间隔来判断是否重复点击 private long mLastClickTime = 0; public static final int TIME_INTERVAL = 1000; private Button mButto

Android重复点击处理

转载自https://www.jianshu.com/p/7b354eb8d0d3 App中,有很大一部分场景是点击按钮,向服务端提交数据,由于网络请求需要时间,用户很可能会多次点击,造成数据重复提交,造成各种莫名其妙的问题。 因此,防止按钮多次点击,是Android开发中一个很重要的技术手段。 以前的处理方式 网上查找到的,或者你可能会想到的方法大概有这些: 1.每个按钮点击事件中...

小二的博客 586

用豆包+Skill从零制作AI漫剧:分镜、画面、配音到成片全流程

AI漫剧作为一种新兴内容形态,结合AI绘画与AI视频生成技术,正在改变短视频创作方式。其核心原理是利用提示词工程,将创意转化为结构化分镜脚本,再通过豆包等AI助手的Skill能力,将重复的脚本生成和分镜拆解流程固化为可复用的指令模板,从而大幅降低从构思到成品的生产门槛。这种模式无需剧组、演员和实景拍摄,让个人创作者也能借助图像生成、TTS配音与剪辑合成工具,批量化地生产剧情短片,适用于短视频平台连载、商业定制与个人IP打造。围绕豆包+Skill这条主线,从选题、剧本写作、分镜表设计,到画面提示词生成、视频片

weixin_29048309的博客 1479

CA51F3系列(国产)+低功耗模式

CA51F351P6芯片是基于1T 8051内核的8位微控制器,通常情况下,运行速度比传统的8051芯片快10倍,性能更加优越。内置8K Flash程序存储器,可多次重复编程的特性给用户开发带来了极大的方便。不仅保留了传统8051芯片的基本特性,还集成了12Bit ADC、LCD/LED驱动、Touch Key、16Bit PWM、 UART、RTC、低电压检测(LVD)等功能模块。支持IDLE、STOP和低速运行三种省电模式以适应不同功耗要求的应用。

WANGJIHUIwang的博客 572

Android APT

1.APT注解处理器 APT是Annotation Processing Tool 的简称,即注解处理器。它是一种处理注解的工具,可以在代码编译期扫描并解析注解,最终生成处理注解逻辑的Java文件,从而减少手动的代码输入。ButterKnife、EventBus、ARouter、GreenDAO都使用了APT技术。 使用APT可以在编译时来处理编译时注解,生成额外的Java文件,有如下效果: ①可以达到减少重复代码手工编写的效果。如ButterKnife,可以直接使用注解来减少findviewb.

zenmela2011的专栏 1518

有史以来最小的GIF/png/jpg/jpeg

昨天我对图像进行了 base64 编码,这样我就可以将它发送到 CouchDB 以测试我正在为客户编写的一些代码。它让我想起了我之前在远程服务器上设置 cookie 时所做的事情。基本上,一个小的 PHP 脚本被放在远程服务器上,它接受几个 GET 参数并根据它们的值设置一些 cookie。然后脚本输出一个 1x1 的透明 GIF。本地服务器上的 PHP 脚本生成了一个 IMG 标签,该标签链接到该图像并根据本地服务器上的 COOKIES 设置参数。

凌凌1301的博客 1416

Android优雅地处理按钮重复点击

App中,有很大一部分场景是点击按钮,向服务端提交数据,由于网络请求需要时间,用户很可能会多次点击,造成数据重复提交,造成各种莫名其妙的问题。 因此,防止按钮多次点击,是Android开发中一个很重要的技术手段。 转载于:https://www.jianshu.com/p/7b354eb8d0d3 以前的处理方式 网上查找到的,或者你可能会想到的方法大概有这些: 1.每个按钮点击事件中...

taoerchun的专栏 645

第十九届全国大学生智能车竞赛越野信标 硬件篇

全国大学生智能汽车竞赛,越野信标组

2301_77568650的博客 4115

跨应用服务器的自定义 IDoc 传输实战:以 CATSDB 工时为例,打通两套 SAP 系统的数据通道

本文介绍了在企业多SAP系统环境下,使用SAP ALE/IDoc技术实现工时数据跨系统传输的解决方案。文章从技术选型、系统架构到具体配置步骤进行了详细说明,重点阐述了IDoc/ALE在异步传输、全链路追踪和数据重放方面的优势。 文章详细讲解了端到端实施流程,包括Logical System配置、RFC Destination创建、Message Type定义、Segment和Basic Type设计等关键步骤。同时提供了出站封装的ABAP代码示例,强调调用MASTER_IDOC_DISTRIBUTE函数后执

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 172

多次点击android版本,Android优雅地处理按钮重复点击

版权声明:本文已授权微信公众号:Android必修课,转载请申明出处App中,有很大一部分场景是点击按钮,向服务端提交数据,由于网络请求需要时间,用户很可能会多次点击,造成数据重复提交,造成各种莫名其妙的问题。因此,防止按钮多次点击,是Android开发中一个很重要的技术手段。以前的处理方式网上查找到的,或者你可能会想到的方法大概有这些:1.每个按钮点击事件中,记录点击时间,判断是否超过点击时间间...

weixin_30708203的博客 1907

PD3.0详解 第十一章 策略层 电源协商(三)(sink端)

前面大师匈介绍了Source端的内容,今天再看一下sink端的内容。大师匈还是想把标准文件的状态机拿出来说一下。大师匈把一张图分成俩部分,大家凑合看一下,一张图实在看不清内容。 Sink 端电源协商状态机。基于sink端哦!!! 上图先!!! 上面俩张图就是整个SINK端口的状态机了。。。介绍一下这个流程: 1、收到hardreset或者刚上电的进入PE_SNK_Startup开始状态。 2、在PE_SNK_Startup阶段后进入PE_SNK_Discovery,并等待Vbus的到来。 3、当Vbus

大师匈的博客 4131

解读 docker-selenium 的浏览器镜像标签矩阵:以 Selenium Grid 4.33.0 + Chrome 124 归档记录为例

本篇文章围绕 docker-selenium 项目 CHANGELOG 中记录 Chrome 124.0.6367.207 镜像发布的原始脚本日志展开,逐行解析 `tag_and_push_browser_images.sh` 的执行输出,说明 Selenium Grid 4.33.0 与 Chrome 124 组合下 node-chrome 与 standalone-chrome 两套镜像被赋予

gitblog_01119的博客 721

【学习系列】SAP RAP 1:关于RAP的一些基本介绍

摘要:SAP RAP和CAP是两种不同的开发模型。RAP(RESTful ABAP)用于在S/4HANA等ABAP平台上构建现代业务应用,基于CDS+OData,适合ABAP开发者扩展核心业务。CAP(云应用编程模型)是BTP上的云原生框架,支持Node.js/Java,适合构建跨系统集成应用。RAP优势在于与S/4HANA深度集成,CAP则更灵活,支持多云环境。选择依据主要取决于开发平台(S/4HANA或BTP)、技术栈(ABAP或Node.js/Java)及应用场景(核心扩展或云原生开发)。

DeveloperMrMeng的博客 1160

微软商店报错“此产品当前不可用”?终极修复指南

微软商店报错“此产品当前不可用”?终极修复指南

安德洛夫 3807
上一篇: 设计模式之代理模式总结
下一篇: 图解数字签名过程
HJsir
博客等级 码龄10年 19粉丝 37原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值