Android随笔
文章平均质量分 77
Android随笔
itbird01
细节决定成败,专注决定高度
展开
-
Android Studio 使用TinyPng插件一键压缩图片
Apk体积太大?基本上是图片资源惹的祸, 此时我们需要对图片进行压缩, 而且是无损压缩那么这里就得提到一个Studio插件, 那就是。原创 2024-10-30 15:09:19 · 397 阅读 · 0 评论 -
Android Studio使用技巧和插件推荐
Android Studio作为Android开发者的主要开发工具,掌握其使用技巧和合理利用插件可以显著提升开发效率。原创 2024-10-29 11:02:25 · 958 阅读 · 0 评论 -
Android架构组件:MVVM模式的实战应用与数据绑定技巧
MVVM模式是一种基于三层结构的架构模式,旨在解决复杂UI开发中的耦合问题。它由三个主要部分组成:Model(模型)、View(视图)和ViewModel(视图模型)。Model:负责管理应用的数据和业务逻辑。它包含应用的所有数据结构和业务逻辑代码,是应用的核心。View:负责呈现用户界面(UI),即用户可以看到并与之交互的部分。在Android中,View通常是Activity或Fragment。ViewModel:充当Model与View之间的桥梁。原创 2024-09-24 11:27:40 · 1119 阅读 · 0 评论 -
Airtest的安装、配置、使用教程
airtest的安装、配置和简单使用,还有就是本地python环境的配置原创 2023-07-18 09:23:10 · 4411 阅读 · 0 评论 -
日常编程中和日期相关的代码和bug
本文主要是Java中和日期时间相隔的几个常用代码函数代码,做了总结,希望在日常编码中,可以帮到大家。闰年平年的判断、延迟执行、定时执行原创 2023-02-24 17:23:52 · 2874 阅读 · 90 评论 -
【字节面试】Fail-fast知识点相关知识点
什么是Fail-fast机制?Hashmap是否拥有Fail-fast机制?ConcurrentModificationException异常原因和解决方法是什么?哪些你常用的数据结构是Fail-fast的,哪些不是?举例说明一下Enumeration与Iterator的异同?原创 2023-02-22 09:20:35 · 3596 阅读 · 143 评论 -
Android APK 签名打包原理分析(一)【APK结构分析】
本文差不多讲完了,我们整体是对照的这个图,同时配合自己的原始目标(几个问题),来一步一步的探索打包的具体过程的。大家不妨阅读末尾,对照的这个图,脑海中回顾一下,通过本文学到的知识点。binder机制的原理aidl、aapt分别的作用R.java和resource.arsc文件的关系AssetManager与 Resources关系打包的过程。原创 2023-02-07 09:51:52 · 6186 阅读 · 140 评论 -
Java异常分类&常见使用场景
今天在自己实现RxJava框架时,发现一些参数异常、流关闭异常等,Rxjava框架是会抛出相应的异常的,所以自己编写实现这块源码的时候,渐渐的也需要使用到这些知识,这里对这块做一下回顾总结。原创 2023-01-11 16:38:45 · 1063 阅读 · 24 评论 -
Android实现雪花特效自定义view
这个冬天,老家一直没有下雨, 正好圣诞节,就想着制作一个下雪的特效。圣诞祝福:平安夜,舞翩阡。雪花飘,飞满天。心与心,永相伴。原创 2022-12-26 19:08:13 · 4804 阅读 · 22 评论 -
Android 全面屏适配及判断是否为全面屏,全面屏手势和虚拟导航栏的判断
全面屏出现后,如果不做适配,屏幕上会出现上下黑边,影响视觉效果。原创 2022-12-26 15:59:36 · 1520 阅读 · 2 评论 -
android 权限常见错误,onRequestPermissionsResult回调不执行问题
问题根因在于,我们调用的是,而点进去看一下这个方法的源码大家知道原因了吧,所以回调会直接到activity的onRequestPermissionsResult方法中。既然知道了原因,那么解决方法就对应的有两个。原创 2022-12-26 15:53:02 · 5670 阅读 · 11 评论 -
2022,itbird的年终总结报告
我毕业之后一直在APP开发,后来几年开始做车机方面的开发,其实说白了,就是在车机上做各式各样的app,再加一部分系统编译、系统源码修改、缺陷修复的工作,总体来说,一年下来,工作内容上,感觉增益不大,主要原因是公司业务的优化,从19年疫情开始,各大行业基本都受到了冲击,很多大厂都纷纷裁员,自然而然,我们业务也会受一定的影响,所以整体资源投入收缩再收缩。但是,个人技术沉淀和成长上来说,总体还算满意。因为年初时,隔离的原因(生活总结的,再和大家详细说),列了很多技术上的方向目标,今年基本都达成。原创 2022-12-14 11:17:50 · 993 阅读 · 19 评论 -
【Retrofit】1.0&2.0区别
Retrofit 是安卓上最流行的HTTP Client库之一,Retrofit基于注解和动态代理,优化了Android中的网络请求操作。随着项目的深入,Retrofit开始深入学习,发现有必要将学习以及实践过程中的一些经验总结一下。包的引用方式没变,如果你想在自己的工程中导入Retrofit2.0,只需将你的gradle脚本中Retrofit依赖一行的版本号改为2.0以后即可(切记:Android Studio环境需要重启哦)Retrofit1.0版本中,如果你想定义一个同步或者异步函数,你应该这样定义:原创 2022-06-02 16:21:03 · 578 阅读 · 0 评论 -
【Rxandroid】Rxandroid源码解读
目录1.AndroidSchedulers类的源码2.RxAndroidPlugins类的源码3.RxAndroidSechedulersHook类的源码4.LooperScheduler类的源码5.HandlerScheduler类的源码6.BuildConfig类的源码7.MainThreadSubscription类的源码总结将Rxandroid(1.2.1)引入我们的项目工程之后,可以看到Rxandroid的包结构Rxandroid的包结构从包结构中,我们了解到相比于Rxjava多了如下几个类:从源原创 2022-06-02 16:17:46 · 407 阅读 · 0 评论 -
如何分析&解决Android ANR
#1.什么是 ANRANR:Application Not Responding ,即应用无响应#2.ANR 的类型以及对比每种类型的规避解决方法ANR 一般有三种类型:1)KeyDispatchTimeout(5 seconds)按键或触摸事件在特定时间内无响应2)BroadcastTimeout(10 seconds)BroadcastReceiver 在特定时间内无法处理完成3)ServiceTimeout(20 seconds or 200 seconds)前台服务:超时时间是 2原创 2022-04-07 00:15:00 · 2604 阅读 · 0 评论 -
可添加头尾的RecycleView的实现
界面编码设计实现中,我们肯定会用到列表展示控件,大家肯定用过ListView。但是RecycleView大家发现有一个问题,我们如果想要为这个RecycleView添加自定义的头部view、尾部view的话,官方这个明显做不到,那这时我们可以考虑用装饰者模式或者继承去扩展一下。原创 2022-09-28 14:47:51 · 356 阅读 · 0 评论 -
动态代理实现的两种方式
我们知道不管静态代理还是动态代理,实际上都是对于源对象的一种控制,通过代理对象来间接访问目标对象。但是静态代理有以下两个问题静态代理存在的问题是:1)一旦接口新增或者修改,那么代理对象和被代理对象就得去适配修改2)静态代理是在代码编写时,去生成的,class文件必然会造成类爆炸的风险有没有方案解决以上的问题呢?显然是有的,那就是动态代理。动态代理,顾名思义,就是在运行时去动态生成代理,我们下面分别说两种实现方式,分别为JDK和Cglib。原创 2022-09-28 11:47:45 · 1832 阅读 · 2 评论 -
浅谈APP弱网优化
网络优化, 是App优化中相当重要的一项优化. 除了客户端, 接口的优化外, 很多一部分优化还依赖于服务器端, 包括服务器端的代码开发, 部署方式等。本人学识有限不便多谈。原创 2022-08-17 15:39:49 · 2498 阅读 · 0 评论 -
如何让自己的github库开源(别人可以直接在gradle中compile)
1.Github项目发布版本1.1 Github项目public首先需要确认您的github项目是public的,在项目右上角即可看到。如果不是public的,需要将您的github项目,变为public。在setting页面下拉找到然后点击Change repository visibility将黑色字,复制进去,然后点击提交,修改成功1.2 Github项目创建tagtag与branch的区别,简单来说,就是branch是可变的、tag是不可变的。 branch是一系列comm原创 2022-05-07 15:47:36 · 1613 阅读 · 1 评论 -
【Android】An activity without a UI must call finish() before onResume() completes
今天在配合客户实现安装第三方app时,遇到一个问题,安装过程中,会长时间黑屏(30s~60s),最初怀疑是否是安装时,android系统资源(内存和CPU)剩余不多,导致安装时间较长,但是这样的话,解释不通,为什么会黑屏的问题,这时只能辛苦导出系统anr日志和logcat日志,一点一点去跟踪分析了,具体错误信息如下:11-17 16:40:07.336 4415 4415 E pzz : 安装APK文件11-17 16:40:07.336 1330 1615 W ContextImp.原创 2022-04-29 14:35:32 · 2322 阅读 · 0 评论 -
Android之allowBackup属性的含义和危险性实例讲解
我们在新建一个android 工程的时候,IDE的自动生成代码,AndroidManifest.xml中的allowBackup属性默认为true,之前没太注意这个属性,但是没想到这个属性会直接导致隐私数据的丢失。下面通过实例来看一下这个属性的影响到底有多大。1.定义Android官方对于这个属性的定义是,Android API Level 8及其以上Android系统提供了为应用程序数据的备份和恢复功能,此功能的开关决定于该应用程序中AndroidManifest.xml文件中的allowBack.原创 2022-04-29 14:00:01 · 6774 阅读 · 0 评论 -
自定义ImageLoader
近期看了一些设计模式相关的书籍,突然有了一个想法,借助所学,去实现一个图片加载框架。#1.UML设计从图中可以看到面向对象的几大设计原则1)依赖倒置原则:高层模块(ImageLoader)只依赖于接口or抽象类(ImageCache),不依赖具体的实现类(DiskImageCache、MemoryImageCache等具体的实现类)2)单一职责原则:加载业务、不同的缓存业务相分离,实现了解耦、分离3)开闭原则:修改不同的缓存策略、用户不同的自定义缓存策略,都可以通过继承ImageCache.原创 2022-04-20 15:29:08 · 2148 阅读 · 0 评论 -
注解和反射(二)【反射的基础知识和架构】
注解与反射,反射的基础知识和架构原创 2022-04-18 17:12:07 · 143 阅读 · 0 评论 -
Android 位图(图片)加载引入的内存溢出问题分析
Android ImageView进行图片加载时,经常会遇到内存溢出的问题,本文针对于这一问题出现的定义、原理、过程、解决方案做统一总结。1.一些定义在分析具体问题之前,我们先了解一些基本概念,这样可以帮助理解后面的原理部分。当然了,大家对于这部分定义已经了然于胸的,就可以跳过了。什么是内存泄露?我们知道Java GC管理的主要区域是堆,Java中几乎所有的实例对象数据实际是存储在堆上的(当然JDK1.8之后,针对于不会被外界调用的数据而言,JVM是放置于栈内的)。针对于某一程序而言,堆的大小是.原创 2022-04-17 00:45:00 · 1406 阅读 · 1 评论 -
Android任务栈机制详解
首先,我们知道,android有任务栈机制,启动任务栈的方式有xml中配置,还有就是通过intent设置flag去启动相应的activity。这里我们分三部分来介绍1.xml配置的几种方式详解2.intent flag启动的几种方式详解3.flag 与 xml 几种方式的区别和联系1.XML配置的几种方式详解Android开发者在AndroidMainifest文件中一共设计了四种启动模式,如下所示1.1 standard默认的启动模式,如果不指定Activity的启动模式,则使用这种方式.原创 2022-04-16 00:45:00 · 1550 阅读 · 0 评论 -
Android BroadcastRecevicer广播类型汇总
Android:Broadcast广播类型主要分为5类:普通广播(Normal Broadcast)系统广播(System Broadcast)有序广播(Ordered Broadcast)粘性广播(Sticky Broadcast)App应用内广播(Local Broadcast)1. 普通广播(Normal Broadcast)即开发者自身定义intent的广播(最常用)。发送广播使用如下:Intent intent = new Intent();//对应BroadcastRe.原创 2022-04-14 00:45:00 · 1291 阅读 · 0 评论 -
Fragment生命周期详解
1.activity和fragment的对比onAttach()这个是回调函数,这个时候 activity已经传进来了,获得activity的传递的值,就可以进行 与activity的通信里,当然也可以使用getActivity(),前提是这个fragment已经和宿主的activity关联,并且没有脱离,他只调用一次。onCreate()系统创建fragment的时候回调他,在他里面实例化一些变量,这些个变量主要是:当你 暂停 停止的时候 你想保持的数据,如果我们要为fragment启动一个后台原创 2022-04-13 00:45:00 · 397 阅读 · 0 评论 -
Android 中 ActivityLifecycleCallbacks的实例详解
这篇文章主要介绍了Android 中 ActivityLifecycleCallbacks的实例详解的相关资料,希望通过本文大家能掌握这部分内容,需要的朋友可以参考下MyApplication代码如下:package com.cc; import java.util.LinkedList; import android.app.Activity; import android.app.Application; import android.os.Bundle; /** * De.原创 2022-04-12 00:45:00 · 489 阅读 · 0 评论 -
如何获取Bitmap在内存中的大小
Android中经常会使用Bitmap,对于开发者来说,可以很方便的调用getByteCount() or getAllocationByteCount()函数,可以获取到大小,但是您思考过几个问题吗?1)一张100px*100px的图片在内存中会占用多大内存?2)内存中如何计算的?3)getAllocationByteCount 与 getByteCount有什么不同吗?1.占了多大内存?Android中一张图片(Bitmap)占用的内存主要和以下几个因数有关:图片长度、图片宽度、单位像素占.原创 2022-04-11 00:45:00 · 1818 阅读 · 0 评论 -
Android Studio自动生成UML关系图的方法步骤
本文主要介绍了Android Studio自动生成UML关系图,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下1.目录安装Sketch It安装"PlantUML Integration"插件问题1.1 安装Sketch It这是我的AS版本:如下步骤:如下图等待插件全部加载后,搜索“Sketch It”插件安装:如果安装无效自行到红色框框提示的主页下载手动安装:选中文件等待安装完毕即可:如此如下图点击Tools下的“Sketch I.原创 2022-04-10 01:00:00 · 2341 阅读 · 0 评论 -
Android View双缓冲机制
java的绘图时,都接触过图像的双缓存技术,解决绘制频繁导致闪屏的问题。今天,记录一下安卓客户端自定义View的缓存技术。由于CPU访问内存的速度要远远快于访问屏幕的速度。安卓端如果需要绘制大量复杂的图像时,每次都一个个从内存中读取图形然后绘制到屏幕就会造成多次地访问屏幕,从而导致效率很低,因此需要使用缓冲技术提高效率。#第一层缓冲:(安卓自己实现)绘制图像时不用上述中逐个绘制的方案,先在内存中将所有的图像都绘制到一个Bitmap对象上,然后一次性将内存中的Bitmap绘制到屏幕,从而提高绘制的效率.原创 2022-04-08 00:30:00 · 577 阅读 · 0 评论 -
如何使APP开机自启动
方案一将app做成系统应用,直接安装在 system/app 目录下具体步骤为:1.在AndroidManifest文件中,添加android:sharedUserId="android.uid.system"例如:2.将您的apk直接通过adb命令push到system/app下面,重启手机即可方案二1.创建一个广播接收者package itbird.com.myapplication33;import android.app.ActivityManager;import and原创 2022-03-31 02:00:00 · 4773 阅读 · 0 评论 -
Android应用在未启动的情况下接受指定广播
最近项目中遇到一个这样的需求,如何使App在接收到指定广播的时候,做特定的事情(启动APP或者做某些数据收集操作)思考:如果APP已经启动,只需注册相应的广播就可以实现这个需求,但是如果APP从未启动过呢?问题原因Android在3.1以后将新安装的应用置为“STOPPED”状态,只有当应用启动过一次之后这个状态才会改变,同时,从Android 3.1开始,系统的包管理器保持跟踪处于停止状态(stopped state)的应用程序,提供了一种控制其从后台进程和其它应用程序启动的方式。这种停止状态的.原创 2022-03-30 00:30:00 · 1679 阅读 · 0 评论 -
Android组件之Fragment(一)---基础知识与运用
一、Fragment是什么?为什么要引入它?是什么?Fragment是Android3.0后引入的一个新的API,他出现的初衷是为了适应大屏幕的平板电脑, 当然现在他仍然是平板APP UI设计的宠儿,而且我们普通手机开发也会加入这个Fragment, 我们可以把他看成一个小型的Activity,又称Activity片段!想想,如果一个很大的界面,我们 就一个布局,写起界面来会有多麻烦,而且如果组件多的话是管理起来也很麻烦!而使用Fragment 我们可以把屏幕划分成几块,然后进行分组,进行一个模块化的管原创 2022-03-18 16:26:49 · 649 阅读 · 0 评论