轻描时光

点滴记录,时光美好,岁月飞逝,幸福依旧!

  • 博客(843)
  • 资源 (5)
  • 收藏
  • 关注

原创 APP保持屏幕常亮的几种方法

一、申请WAKE_LOCK 权限二、Activity 中设置FLAG_KEEP_SCREEN_ON FLAG。

2024-04-18 09:13:15 10

原创 AI代写赚钱逻辑

代写项目其实不算一个新项目,算是一个存在比较长期的项目,只不过,因为AI的兴起,又产生了一些新的机会那代写是怎么回事呢?AI之前,想进这行,门槛挺高的,文笔得过硬,产量还得高。我推荐这个项目是因为,AI降低了普通人入局的门槛,小白不用很有文采,只要学习并掌握了利用AI处理不同场景的能力,及拆解用户需求的能力,接单,快速拿到正反馈是很容易的一件事情。作为引流端,可以到各大平台去发布,引流到微信上成交,这个周期可能要看运气还有你作图,做视频的水平,周期不定,但基本上快则几天,慢则1个月都会有正反馈。

2024-04-17 16:12:56 246

原创 Java内部类有坑,100%内存泄露!

内部类改为静态的之后,它所引用的对象或属性也必须是静态的,所以静态内部类无法获得外部对象的引用,只能从 JVM 的 Method Area(方法区)获取到static类型的引用。内部类改为静态的之后,它所引用的对象或属性也必须是静态的,所以静态内部类无法获得外部对象的引用,只能从 JVM 的 Method Area(方法区)获取到 static 类型的引用。非静态内部类会持有外部类,如果有地方引用了这个非静态内部类,会导致外部类也被引用,垃圾回收时无法回收这个外部类(即使外部类已经没有其他地方在使用了)。

2024-03-13 09:22:20 796

原创 教你用Android Studio如何打jar包与aar包

就使用了的,然后我去查看下AS中的org.gradle.java.home的值,结果发现它一直是原来的jdk8路径,那我就手动去项目根目录中找到gradle.properties文件来修改下它的值。怕什么来什么,直接BUILD FAILED,接下来就得根据错误提示(错误提示我的Gradle要求的是jdk11,而我使用是jdk8...等解决方式)来逐步解决,错误如下。好了,本文到这里就算结束了哦,后续会聊聊项目与原生之间的相互调用、aar与jar的引入,sdk的接入等。添加个复制移动命名任务。

2024-03-06 15:05:53 197

原创 装饰你的APP:使用Lottie-Android创建动画效果

Lottie-Android是一个强大的开源库,由Airbnb开发,旨在帮助开发者轻松地在Android应用中添加高质量的动画效果。它基于Adobe After Effects软件中的Bodymovin插件,通过解析导出的JSON文件来渲染并播放复杂的矢量动画。Lottie-Android提供了许多令人印象深刻的功能和优点。首先,它支持从After Effects导出的JSON文件,这意味着设计师可以直接将他们创建的动画效果转化为Lottie可用的格式,而无需重新制作或重新编码动画。

2024-03-06 10:56:16 271

原创 Android 14后台服务永久保活的技术方法

到目前为止,我们已经创建了一个在Android应用程序中正常运行的后台服务。然而,在Android 8及以上版本中,由于后台服务受到一些限制,我们的服务可能会在一段时间后被杀死。通过以上步骤,我们可以实现在Android应用中创建一个永久保活的后台服务,以确保应用的功能和服务始终可用。为了在没有任何限制的情况下启动后台服务,我们需要在AndroidManifest.xml文件中定义一个持久化标志。在本篇博客中,我们将探讨如何创建一个在Android系统中不会被杀死的后台服务。第一步:创建一个后台服务。

2024-03-05 08:35:28 540

原创 Android 混淆是啥玩意儿?

Android混淆,是伴随着Android系统的流行而产生的一种Android APP保护技术,用于保护APP不被破解和逆向分析。简单的说,就是将原本正常的项目文件,对其类、方法、字段,重新命名a,b,c…之类的字母,达到混淆代码的目的,这样反编译出来,结构乱糟糟的。

2024-03-01 08:38:41 604

原创 使用 Gradle 版本目录进行依赖管理 - Android

剩余的依赖同上依次迁移过去到版本目录即可,需要注意的是,像类似 compose-bom 已经统一了版本号的物料清单,被包含的依赖不再需要定义版本号并且不需要使用 module,而是使用 group。即冒号(:)之前的就是所谓的依赖组,你可以理解为一个依赖组捆绑了多个相关的依赖项,冒号之后的就是它的组成部分。Gradle版本目录是 Gradle 6.8 版本引入的一项新功能,它允许开发者将项目中使用的所有第三方依赖的版本信息集中管理在一个地方。在软件开发中,依赖管理是一个至关重要的方面。

2024-02-28 12:28:47 702

原创 Android内存泄漏知识点

当一个对象已经不需要在使用了,本应该被回收,而另一个正在使用的对象持有它的引用,导致对象不能被回收。因为不能被及时回收的本该被回收的内存,就产生了内存泄漏。如果内存泄漏太多会导致程序没有办法申请内存,最后出现内存溢出的错误。堆内存都有一定的大小,能容纳的数据是有限制的,当Java堆的大小太大时,垃圾收集会启动停止堆中不再应用的对象,来释放内存。当在极短时间内分配给对象和回收对象的过程就是内存抖动。

2024-02-20 17:13:31 41

原创 Fragment为什么不用构造函数传递参数?

以上代码中我们发现instantiate这个方法的作用是创建了fragment对象,Fragment是用反射的方式创建的,而且有mArguments来控制参数那么当然要用特定的方式来传递参数。直接在Fragment的构造方法中传递参数,可能会导致在Fragment重新创建时(如屏幕旋转等配置变更时),无法正确地恢复这些参数。在源码中会发现,Fragment的构造函数是空的,所以他和普通类的创建对象的方式不太一样。虽然从技术上讲可以在Fragment的构造方法中传递参数,但这通常被认为是不良的实践。

2024-01-24 10:47:40 86

原创 Android面试官爱问的12个自定义View的问题

问题:请解释自定义View的基本概念及其在Android开发中的重要性。出发点:了解面试者对自定义View核心概念的理解,以及其在实际开发中的应用能力。参考简答:View与ViewGroup:View是Android界面的基本构建块,而ViewGroup是一种特殊的View,用于包含和管理其他View。自定义View的必备步骤:继承View或其子类,实现构造函数、测量、布局和绘制方法。重写onDraw方法:在该方法中进行绘制操作,实现自定义的外观和交互。

2024-01-19 11:22:22 922

原创 MPAndroidChart PieChart设置空数据 显示文字、颜色、字体

mPieChart.setNoDataTextColor(ContextCompat.getColor(this, R.color.颜色ID));MPAndroidChart PieChart中无数据默认图 显示“No chart data available.”//设置字体大小 单位默认px 可以用工具类转换dip2px 等。mPieChart.setNoDataText("暂无数据");我们可以用以下方法修改默认设置,可以定义文字、颜色、字体。

2024-01-18 15:40:25 94

原创 Android 布局菜鸟 android中的布局类型和特点?

在这个布局中,整个界面被当成一块空白备用区域,所有的子元素都不能被指定放置的位置,它们统统放于这块区域的左上角,并且后面的子元素直接覆盖在前面的子元素之上,将前面的子元素部分和全部遮挡。ConstraintLayout布局中的子控件需要约束关系,控件的相互依赖,这有点像相对布局 ,但是约束布局的功能更加强大,它很方便的在编辑器上进行添加删除控件,并设置属性值,简化操作。主要以水平或垂直方式来排列界面中的控件。在线性布局中,如果水平排列,垂直方向上只能放一个控件,如果垂直排列,水平方向上也只能放一个控件。

2024-01-16 17:24:37 252

原创 Application为啥不能作为Dialog的context?

而这个传入的token就是之前startActivity流程中,写入到DisplayContent#mTokenMap这个集合中的key,所以自然是能够获取到对应的value,即WindowToken类型属性token不为null,自然走不到3处标记的条件分支中,窗口校验通过。在这个方法中,我们最终会调用到IWindowSession#addToDisplayAsUser()方法,这个方法是一个跨进程的调用,经过一番折腾,最终会执行到WMS的addWindow()方法。

2024-01-10 09:03:07 1007

原创 今年是收获与成长的一年

身边刚毕业的同事都很聪明,也的确非常优秀,很多都是高学历,印象最深的是一位复旦大学的硕士跟我闲聊时说,他对很多东西都不感兴趣甚至排斥,比如买房结婚生娃,高中的时候好歹知道的比较少,还是比较有活力的。大自然的演化把给予我们快乐当成是一种奖赏,举个例子,性高潮所带来的快乐鼓励我们发生性行为,将自己的基因传下去。身边有一位同事被诊断出糖尿病,确实让他郁闷了一段时间,但是病情没有持续的恶化,他调整过来了,通过健身和自律的生活,他感觉比一般人更加的快乐,尤其是前段时间谈了女朋友后,大家都觉得他的精神面貌更好了。

2024-01-09 14:39:30 422

原创 关于android有时候Edittext.setText无效的解决方法,有效

et_content.setText(TAG+“用户可见的时候”);你只要加上控件的post方法就可以及时刷新设置的值了,亲测有效。

2024-01-02 16:51:00 427

原创 啥!腾讯视频崩了,年终奖没了。。。

最开始阿里云崩了,阿里云崩了之后,没几天滴滴也崩了,滴滴崩了之后,结果昨天腾讯视频也崩了......年底了,都要来刷刷存在感吗?一般来说,数据库的主机与系统服务的主机位于不同的集群,处于解耦状态,猜测大概率是数据库挂了,所以访问VIP用户的数据表,返回为null。不少网友表示,周末晚上正式追剧的大好时光,这么一搞,瞬间就感觉进入下一周的工作状态了,周末的快乐,一下啪的就没了,非常难受。不过相对来说,腾讯视频并不算是特别热门的业务,业务的流量,感觉自从有了抖音以及视频号以外,已经下降了好多。

2023-12-05 11:56:54 135

原创 史上最全测试开发工具推荐(含自动化、APP性能、稳定性、抓包神器)

openatx开源的ui自动化工具,支持Android和iOS。主要面向的编程语言是Python,API设计简洁易用,在开源社区也是很受欢迎。

2023-12-05 10:45:37 205

原创 2023 年 APP 从备案到上架全过程

备案需要去工信部门办理,提交备案申请表和相关资料,等待审核。备案审核需要1-3个工作日,一旦备案通过,就可以继续提交其他申请。一旦支付成功,APP就会正式上架,用户就可以在App Store或Google Play上下载和使用。需要注意的是,以上流程仅供参考,具体情况可能因国家法律法规、平台政策和管理制度的不同而略有差异。同时,随着技术和政策的不断变化,APP备案和上架的流程也可能会发生变化。在开发阶段,开发者需要遵守苹果公司或Google的相关规定和条款,进行APP开发和测试。

2023-12-01 08:56:47 141

原创 Android保活系列之——进程优先级

进程保活说白了就是保证自己App进程不死,或者说死了又悄悄的‘起死回生’,然后偷偷摸摸的做一些羞羞的事情。App被杀死有以下几种可能:被系统杀死和被用户杀死我们还可以理解,被竞争对手杀死是什么鬼?这些都会在稍后的文章中讲解如何针对被竞争对手杀死,或者可以私聊我。本文主要针对被系统杀死的情况做相对应的优化。

2023-11-27 16:48:14 519

原创 Android二维码扫描开源库 - BGAQRCode-Android

在自己项目里集成时记得在 onDestroy 方法中调用 mQRCodeView.onDestroy(),在 onStop 方法中调用 mQRCodeView.stopCamera(),否则会出现黑屏。根据之前公司的产品需求,参考 barcodescanner 改的,希望能帮助到有生成二维码、扫描二维码、识别图片二维码等需求的猿友。* 同步创建指定前景色、白色背景色、带logo的二维码图片。* 同步创建指定前景色、指定背景色、带logo的二维码图片。* 同步创建指定前景色、白色背景色的二维码图片。

2023-11-23 15:14:24 678

原创 ConstraintLayout使用详解

下面是ConstraintLayout的使用详解。约束(Constraint):Constraint指的是控件与父容器或其它控件之间的关系,比如:控件的上边缘与其父容器的上边缘对齐、控件的左边缘与另一个控件的右边缘对齐等。约束线(Constraint Line):Constraint Line指的是两个控件之间的连接线,每个控件都有四条Constraint Line,分别是上、下、左、右。接下来,我们就可以开始使用约束来布局了。

2023-11-17 13:15:25 138

原创 移动端APP版本治理

iOS用户一般在App Store更新应用,但是对于Android来说,厂商比较多,对应的渠道也多,还有一些三方的,这些碎片化的渠道自然就把用户人群给分流了,为了让每一个用户都有渠道可以更新到最新版本,那就需要在渠道的运营上下点功夫了,尽可能的多覆盖。升级文案属于是ROI很高的了,只需要总结一下新版本带来了哪些新功能、有哪些提升,然后配置一下就好了,但是对用户来说,却是实打实的信息冲击,他们可以明确的感知到新版本中的更新,对升级意愿会有非常大的提升。我们还有哪些方式可以告诉他需要升级?

2023-11-15 10:09:28 258 1

原创 java.lang.SecurityException: UID 1010482 does not have pe://包名/external_files/sple/IMG_123123141.jpg

这个很显然是安全权限问题。但是奇怪的我AndroidManifest 中已经配置过了FileProvider。问题是红框中定义的权限名称与我修改的AndroidMenifest FileProvider权限名称不一致。问题是红框中定义的权限名称与我修改的AndroidMenifest FileProvider权限名称不一致。

2023-11-14 11:13:12 100

原创 Java与Kotlion对接

在Kotlin中使用Java类时,不能使用Kotlin中的null安全性。总之,Kotlin与Java可以无缝地对接,Kotlin的语法更为简洁和易读,同时也保留了Java的优秀特性。Kotlin是一种基于Java虚拟机的静态类型编程语言,可以与Java良好地对接。Kotlin可以直接调用Java类和方法,也可以使用Java框架和库。Kotlin中的lambda表达式可以直接使用Java中的函数式接口。Kotlin中可以使用Java的泛型和注解。Kotlin中可以使用Java的反射功能。

2023-11-06 08:35:38 143

原创 Android打造一个高性能无限层级显示的树形控件(Android树形控件)

最近公司的Android项目里有一个地方需要选择某公司的所有部门,因为手机屏幕有限所以并不能像网页那样显示树状结构,但是如果只是用列表依次显示所有的部门又会让用户很难找到想要找的部门(即使加上搜索功能也很难表现出层级关系),由于系统控件ExpandableListView 只能显示两级,加上数据集的组织比较麻烦,所以就使用ListView来实现如下的树形展示效果。为了体现出层级结构,其实就是增加缩进就可以了。接下来我们就以层级显示一个公司的所有部门为需求来实现一下,其实只要具有树形结构我们都可以这样做。

2023-11-06 08:34:01 542

原创 Android APT的使用

APT(Annotation Processing Tool)是一种处理注释的工具,它对源代码文件进行检测找出其中的 Annotation,根据注解自动生成代码。Annotation 处理器在处理 Annotation 时可以根据源文件中的 Annotation 生成额外的源文件和其它的文件(文件具体内容由 Annotation 处理器的编写者决定),APT 还会编译生成的源文件和原来的源文件,将它们一起生成 class 文件。

2023-11-01 17:25:42 283

原创 android点击全屏预览照片第三方库使用

自定义预览图片,可以扩展加一下自己的按钮功能等。/**** 重写该方法* 使用你的自定义布局**/@Override自定义预览的布局// 这是第三方库提供的,也就是默认的布局文件。

2023-10-24 17:22:29 550

原创 TCP三次握手和四次挥手

服务器收到SYN包后,向客户端发送一个SYN+ACK包,其中SYN=1,ACK=1,确认号为x+1,同时随机生成一个序列号y。客户端收到SYN+ACK包后,再向服务器发送一个ACK包,其中SYN=0,ACK=1,确认号为y+1。客户端收到服务器的FIN包后,向服务器发送一个ACK包,确认收到了服务器的关闭请求,然后关闭连接。客户端向服务器发送SYN包(同步包),其中SYN=1,ACK=0,并随机生成一个序列号x。服务器收到FIN包后,向客户端发送一个ACK包,确认收到了客户端的关闭请求。

2023-10-20 08:55:58 170

原创 详解对称算法、非对称算法、签名

对称算法是指加密和解密使用同一个密钥的算法,常见的对称算法有DES、AES等。对称算法适用于需要快速加密解密的场景,比如局域网内的通讯数据加密。非对称算法是指加密和解密使用不同的密钥的算法,常见的非对称算法有RSA、DSA等。其优点是密钥的管理和传输相对容易,因为公钥可以公开传输,私钥保管在本地即可,且私钥不会被公开。总的来说,对称算法适用于数据量较大,但需要保密的场景,而非对称算法适用于数据量较小,但需要安全性较高的场景。签名技术的优点在于,接收者可以验证发送者的身份,并且可以确定文档是否被篡改。

2023-10-19 15:56:43 164

原创 Charles的使用详解

在弹出的窗口中,将“HTTP Proxy”和“HTTPS Proxy”分别设置为“localhost”和“8888”,然后点击“OK”按钮。分析请求和响应:当Charles开始捕获流量时,所有的HTTP和HTTPS请求和响应都会出现在Charles的“Sequence”选项卡中。Charles是一款功能强大的网络调试工具,主要用于捕获和分析HTTP/HTTPS请求和响应,支持重放和模拟请求,监控网络流量等。需要注意的是,Charles可以捕获所有网络流量,包括敏感信息,因此在使用Charles时需要谨慎。

2023-10-16 14:34:17 218

原创 Android的Dalvik与Art区别

ART是Android 4.4版本以后的新一代运行时环境,它使用AOT方式将应用程序的DEX字节码编译成本地机器指令,从而提高应用程序的执行效率。相比Dalvik,ART在应用程序启动时需要更多时间来进行预编译,但是一旦应用程序启动完成,它的执行效率会更高,并且能够在使用时不断地进行优化,从而达到更好的性能。综上所述,Dalvik与ART的主要区别在于执行方式不同,Dalvik是基于JVM的解释器,而ART则是使用AOT方式进行本地编译。ART具有更好的性能和更低的内存占用,但是需要更长的预编译时间。

2023-10-10 09:24:32 375

原创 Android的MEmory Analyzer使用详解

Android的MEmory Analyzer是一种分析和监测Android应用程序内存使用情况的工具,可以帮助开发者找到内存泄漏和其他内存问题。使用Memory Analyzer需要一定的经验和技能,但它是一种非常有用的工具,可以提高开发过程中内存使用情况的监控和分析能力。

2023-10-10 09:04:24 418

原创 Android 的Memory Profiler详解

Memory Profiler是Android Studio中的一个工具,用于监测应用程序的内存使用情况。它可以帮助开发者找出应用程序中的内存泄漏和性能问题,以及改进应用程序的内存使用效率。总的来说,Memory Profiler工具是Android开发过程中非常重要的一款工具,它可以帮助开发者定位和解决应用程序中的内存问题,提高应用程序的性能和稳定性。1.内存图表:显示应用程序内存使用量的实时变化情况,可以通过此来找出内存使用量过高的问题。3.对象跟踪:可以追踪具体某一对象的内存分配及释放情况。

2023-10-10 08:58:18 231

原创 Android使用AOP切面编程

当我们在应用程序中调用任何一个方法时,切面类中的代码都会被自动执行,输出日志。AspectJUtils.injectAspectJ()方法的参数是一个Context对象,它会自动扫描应用程序中的所有类,并将切面类应用到匹配的方法上。@Before注解指定了在方法执行前执行的代码,@After注解指定了在方法执行后执行的代码。最后,在应用程序的入口Activity中,我们需要使用AspectJ库来装配切面。接下来,定义一个切面类,这个类包含了我们想要在代码中增加的功能,例如日志记录。

2023-10-09 17:03:57 326

原创 Traceview与TraceCompat 使用详解

Systrace 是一个工具,可以识别和调试性能问题,它还可以捕获和分析应用程序和系统的性能瓶颈。它可以记录应用程序的方法调用和执行时间等信息,然后将这些信息显示在一个可视化的界面上,以便开发人员更好地了解应用程序的性能瓶颈和问题,并进行优化和调试。Traceview是Android Studio的一个性能分析工具,可以帮助开发者分析和检测应用程序的性能问题,以便更好地优化应用程序。总的来说,通过Traceview工具对应用程序的性能进行分析,可以更好地发现和定位性能问题,为应用程序的优化工作提供帮助。

2023-10-09 16:35:40 194

原创 Android Application 的 onCreate 和 attachBaseContext执行顺序

具体来说,在 Android 应用启动时,系统会先调用 Application 的 attachBaseContext 方法,在这个方法中可以进行一些初始化操作,比如设置全局的异常处理、设置语言环境等。需要注意的是,如果在 Application 的 attachBaseContext 方法中添加了一些依赖于 Context 的操作,那么这些操作需要在 attachBaseContext 方法中执行,否则可能会出现一些异常。

2023-10-09 15:51:11 388

原创 UML建模语言分析和设计

UML提供了多种图形化工具,用于描述系统的不同方面,包括用例、类、对象、状态、活动和序列等。通过UML建模,开发人员可以更加清晰地了解系统的不同部分之间的关系和交互,从而更好地进行软件开发和维护。统一性:UML提供了一种标准的建模语言,使得开发人员可以采用相同的语言进行沟通和交流,从而使得开发工作更加协调和高效。总之,UML建模语言是一种非常强大的工具,可以帮助开发人员更好地进行软件系统的设计和实现,提高软件开发的效率和质量。易扩展性:UML提供了丰富的建模工具和元素,可以轻松扩展和定制自己的模型。

2023-10-07 09:55:25 98

原创 Nginx配置文件详解

Nginx(发音为“engine-x”)是一个高性能的,开源的,反向代理服务器。以上是Nginx配置文件的一些常用命令和指令,通过修改这些指令和命令,可以实现Nginx服务器的各种功能。worker_processes:Nginx启用的worker进程的数量,建议设置为CPU核心数的两倍。events:Nginx服务器的全局事件块,指定Nginx的工作模式和连接处理方式。try_files:在该location块中查找文件,如果没有找到则用后面的代替。root:设置该location块的根目录。

2023-09-28 15:44:28 130

原创 Android 实现 文件操作获取所有视频,异步查询媒体数据库获取视频的时长,并将视频通过recyclerView展示出来,每个item展示获取的视频时长代码实现

其中,VideoItem是自定义的POJO类,VideoAdapter是RecyclerView的适配器。在适配器中,可以根据VideoItem中的时长信息显示视频时长。最后,通过RecyclerView展示出所有视频文件,并显示视频时长。接下来,使用异步查询媒体数据库获取视频的时长。首先,需要获取所有视频文件的路径。

2023-09-28 10:43:42 324

善考测试版.apk

啥考app的下载,能安装不上 如果安装不上的话 加我 在单独发给你

2019-06-14

java基础(se)练习手册部分讲解

Java绝对经典的讲解,简单明了,适合没有基础的人学习,如果没有积分留言

2018-06-28

计算机网络基础

适合无专业基础知识的,面试技巧,很简单,很实用的一套网络ppt

2018-06-28

java基础(se)练习手册(绝对超值)

java基础(se)练习手册(绝对超值),自己亲自出题,结合面试,更贴近项目.

2018-06-28

java习题练习很简单,很基础,很有必要学习

java基础练习手册,很不错的练习的手册,加油学习吧,相信你肯定能成为java大师

2018-06-25

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

TA关注的人

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