- 博客(119)
- 资源 (8)
- 收藏
- 关注

原创 android interview 2
这里介绍和java关联比较大的知识类加载机制java的类加载机制在 Java 程序启动的时候,并不会一次性加载程序中所有的 .class 文件,而是在程序的运行过程中,动态地加载相应的类到内存中。通常情况下,Java 程序中的 .class 文件会在以下 2 种情况下被 ClassLoader 主动加载到内存中:调用类构造器调用类中的静态(static)变量或者静态方法JVM 中自带 3 个类加载器:启动类加载器 BootstrapClassLoader扩展类加载器 ExtClass
2021-03-21 14:32:23
135

原创 android难点汇总
Handler了解Handler的原理。梳理Android的消息机制谈谈handler容易导致内存泄漏的原因。private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { ... } };当使用内部类(包括匿名类)来创建Handler的时候,Handler对象会隐式地持有Activity的引用
2020-10-19 17:44:45
307

原创 android开发常见编译错误
databinding在xml中使用汉语的错误报错信息Caused by: org.apache.xerces.impl.io.MalformedByteSequenceException: Invalid byte 3 of 3-byte UTF-8属于不同平台下,字符集不同导致的。xml使用的字符常量,还是要定义在strings.xml中。解决方案:见 传送门1 传送门2...
2020-07-23 10:59:59
600

原创 Gradle for Android 浅析
概述Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言来声明项目设置,而不是传统的XML。当前其支持的语言限于Java、Groovy和Scala,计划未来将支持更多的语言。Gradle可以做哪些事呢差异管理多渠道打包,根据渠道的不同实现差异化(例如,不同的签名文件,不同的icon,不同的服务器地址)等。依赖管理我们的应用可以依赖不同的jar, library. 你当然可以通过将.jar/library工程下载到本
2020-06-19 17:50:50
324

原创 dataBinding总结
简介dataBinding是android支持的一种MVVM框架,使代码逻辑结构更为清晰。使用将layout变为dataBinding的结构。打开布局文件,选中根布局的 ViewGroup,按住 Alt + 回车键,点击 “Convert to data binding layout”<?xml version="1.0" encoding="utf-8"?><layo...
2019-08-27 18:36:15
214

原创 Android框架搭建
开源框架动态权限使用Google的框架Easypermissions, 传送门Activity生命周期全局监听对activity的生命周期检测,例如退后台等的检测,可以在Application中registerActivityLifecycleCallbackspublic class MyApplication extends Application { @Override...
2019-08-14 18:04:22
170

原创 adb命令总结
adb基础查看连接adb的设备adb devicesadb服务打开与关闭adb start-server adb kill-server 重启手机adb reboot安装卸载adb install xxx.apkadb install -r xxx.apk //保留数据和缓存文件,重新安装apkadb uninstall &amp;lt;package_name...
2018-12-29 22:06:53
3665
2
原创 Android知识收集
App Icon Generator,图标生成支持android, ios。抓包工具-Reqable下载.Android各尺寸图标生成。阿里云云效Maven。m3u8 在线播放器。
2024-07-10 17:06:41
308
原创 Kotlin协程在android中的使用总结
协程的三大件共同构成了Kotlin协程的核心机制,使得开发者能够编写高效、易于理解和维护的异步代码。
2024-05-20 11:48:00
1142
原创 android APP内存优化
出厂后,java虚拟机对单个应用的最大内存分配就确定下来了,超出这个值就会。如果要获取手机的总内存,可以使用如下方法。针对不同手机获取app内存信息,可通过。不同厂商和机型可能不一样。.单个进程能使用的最大内存为。在代码中获取可使用的最大内存。可以使用更大的内存, 即。配置使用最大内存,在。
2023-08-10 11:53:44
1388
原创 ViewPager+Fragment 销毁重建问题
保存的引用调用,出现了崩溃 (此时的。等生命周期方法,不能拿来用)。查找,使用查找到的进行展示。保存的值 与 真实展示的。并不是使用新建,而是从。保存的,直接使用会出错。
2023-07-07 15:02:10
1280
原创 Android 包体积优化
点击菜单栏的Code,选择Analyze Code -> Run Ispection by Name。这个“app”即你的项目,下面的每个item都是无用资源文件,逐个删除即可。看下哪部分占有的空间比较大,会自动按照文件大小逆向排序。
2023-06-27 18:10:54
425
原创 flutter学习之Dart语言
Dart是由谷歌开发的计算机编程语言,它可以被用于web、服务器、移动应用 和物联网等领域的开发。Dart诞生于2011年,号称要取代JavaScript。但是过去的几年中一直不温不火。直到Flutter的出现现在被人们重新重视。要学Flutter的话我们必须首先得会Dart.
2023-04-13 11:53:16
1043
原创 android WebView常用总结
常用方法webview 官方文档:传送门WebView wv = findViewById(R.id.web_view);WebSettings settings = getSettings();settings.setJavaScriptEnabled(true); //启用js//设置缓存模式,缓存模式如下settings.setCacheMode(WebSettings.LOAD_DEFAULT);缓存的模式WebSettings.LOAD_DEFAULT 如果本地缓存可用且没有过
2022-04-12 17:27:10
3126
原创 TabLayout使用总结-一步步实现动画效果
期望效果根据UI设计,我们期望实现一个如下效果的Layout,看效果很适合用ViewPager+TabLayoutTabLayout学习在开始动手前我们先了解下TabLayout. 他的实现是通过HorizontalScrollView,里面添加了一个view即SlidingTabIndicator,我们看到的指示器是通过drawable的绘制实现的。TabLayout支持了很多属性。具体可参考源码,注释部分对属性介绍很详细。这里我们总结了一些常用的属性。tabMode Tablayout的
2021-06-08 17:07:56
2348
原创 Kotlin协程笔记
概述在Kotlin中,协程是一套由Kotlin官方提供的线程API。它有优点:可以通过看似同步的方式写出异步代码。这也是协程的特性之一 非阻塞式挂起。可以解决地狱回调的问题。例如,如下代码形式launch({ val user = api.getUser() // ???? 网络请求(IO 线程) nameTv.text = user.name // ???? 更新 UI(主线程)})协程的使用在需要切换线程或者指定线程的时候 用到协程。怎么来使用协程,先了解最基
2021-05-06 23:35:39
249
原创 wsl搭建android编译环境
概述在windows下,我们不太好执行一些脚本,像shell,如果之前项目有写过一些脚本,为了兼容windows可以通过搭建wsl环境,来执行。准备工作windows安装wsl通过windows应用商店安装,在windows应用商店搜索linux或者wsl,选择Unbuntu或者其他linux系统。然后执行起来,就是一个linux系统。我们的C盘,D盘,分别对应,linux的/mnt/c,/mnt/d 目录。其他目录同Linux,需要对Linux有一定的了解。熟悉linux的一些命令wsl 是
2021-01-15 11:02:21
1508
原创 Window10 恢复应用商店
如果win10找不到应用商店,可以通过以下方法恢复。启动PowerShell需要以管理员权限运行在“开始”菜单,输入powerShell,右键以管理员权限执行。找到你的windowsStore 安装目录每个系统对应的包名不同,安装目录也不相同, 通过下面命令查看Get-AppxPackage -allusers如上图所示,把Name=Microsoft.WindowsStore的目录拷贝下来,接下来要用。添加到注册文件执行如下命令,等命令执行完,即可在“开始”菜单找到,windows应用
2021-01-13 10:18:50
473
原创 android interview
为什么不建议使用Intent传递大的数据Intent 传递大数据,会出现 TransactionTooLargeException 的场景。简单来说,Intent 传输数据的机制中,用到了 Binder。Intent 中的数据,会作为 Parcel 被存储在 Binder 的事务缓冲区(Binder transaction buffer)中的对象进行传输。而这个 Binder 事务缓冲区具有一个有限的固定大小,当前为 1MB。你可别以为传递 1MB 以下的数据就安全了,这里的 1MB 空间并不是当前操
2020-12-30 17:46:41
303
原创 android jetpack总结
LivedataLiveData 是一个可被观察的数据持有类。与普通的被观察者(如 RxJava 中的 Observable)不同的是,LiveData 是生命周期感知的,也就是说,它能感知其它应用组件(Activity,Fragment,Service)的生命周期。这种感知能力可以确保只有处于 active 状态的组件才能收到 LiveData 的更新。LiveData 是一个抽象类,我们不能直接使用。我们可以使用它的子类:MutableLiveData MediatorLiveDataMutab
2020-12-30 16:05:35
276
2
原创 android proguard
基本操作android混淆是为了代码安全。在build.gradle中可以配置。buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } }如上,将minifyEnabled设为true就开启了混淆。
2020-11-05 14:54:14
215
原创 Gradle for Android groovy篇
命令行我们在Android Studio中,打开底部 Terminal tab页,就可以使用命令来操作了,例如git,gradle等。gradle的命令工具是 gradlew.在不同系统下,命令引用略有区别。在linux, macOs下,执行命令,./gradlew xxx 在windows下执行命令gradlew xxxgradle常用命令./gradlew tasks #查看主要任务./gradlew tasks --all #查看所有任务,包括缓存任务等./gradlew :modu
2020-06-24 18:29:08
236
原创 Gson使用总结
简单使用gson.fromJson(str, User.class);gson.toJson(obj);@SerializedName //容错(字段容错)泛型擦除问题。List<String>, 使用TypeToken.个性化配置,GsonBuilder@Expose //过滤 , 需要在build中配置生效。@Since @Until 版本号管理。需要在build中配置版本号。TypeAdapter, 自定义解析。参考资料你真的会用Gson吗?Gson使用指南...
2020-05-28 18:14:59
231
原创 Java注解(Annotation)笔记
概述Annotation 可以标注 Java 语言中的类、方法、变量、参数和包等。和 Javadoc 不同的是:Java 标注可以通过反射获取标注内容。在编译器生成类文件时,标注可以被嵌入到字节码中。Java 虚拟机可以保留标注内容,在运行时可以获取到标注内容 。内置的注解Java 定义了一套注解,共有 7 个,3 个在 java.lang 中,剩下 4 个在 java.lang.annotation(元注解) 中。@Override,@Deprecated ,@SuppressWarnings
2020-05-28 13:58:14
187
原创 python并发之协程
概述协程(Coroutine) 协程的作用,是在执行函数A时,可以随时中断,去执行函数B,然后中断继续执行函数A(可以自由切换)。但这一过程并不是函数调用(没有调用语句),这一整个过程看似像多线程,然而协程只有一个线程执行。协程有以下优势:执行效率极高。因为子程序切换(函数)不是线程切换,由程序自身控制,没有切换线程的开销。不需要多线程的锁机制,因为只有一个线程,也不存在同时写变量冲突,...
2020-04-27 18:21:32
235
原创 Android高质量开发
关于崩溃Android 崩溃分为 Java 崩溃和 Native 崩溃。Native 崩溃捕获中最成熟的方案。使用Breakpad (传送门)工具。ANR(Application Not Responding,程序没有响应)这问题。怎么去发现应用中的 ANR 异常呢?使用 FileObserver 监听 /data/anr/traces.txt 的变化。非常不幸的是,很多高版本的 ROM...
2020-04-21 15:28:37
189
原创 python常用第三方模块
Pillow强大的图片处理库。如果安装了Anaconda,Pillow就已经可用了。否则,需要在命令行下通过pip安装:$ pip install pillowfrom PIL import Image# 打开一个jpg图像文件,注意是当前路径:im = Image.open('test.jpg')# 获得图像尺寸:w, h = im.sizeprint('Original ...
2020-04-14 18:35:23
326
原创 python内建模块
datetimefrom datetime import datetime, timedelta, timezone#测试datetimenow = datetime.now()#创建时间by数字dt = datetime(1970, 2, 28, 20, 10, 50)#创建时间by stringdt = datetime.strptime('2015/06/01 18:19:5...
2020-04-13 17:27:26
265
原创 python进程、线程
python多进程编程forkUnix/Linux操作系统提供了一个fork()系统调用,他会返回两次,pid==0表示子进程,pid>0表示父进程。import osprint('Process (%s) start...' % os.getpid())# Only works on Unix/Linux/Mac:pid = os.fork()if pid == 0: ...
2020-04-10 18:34:54
147
原创 python IO编程
文件读写open(path, 'mode')打开文件mode的含义 r读取文本文件,rb读取二进制文件f.read()方法,默认读取全部文本,也可以指定大小。f.readline()方法,每次读取一行,readlines()读取全部内容注意一定要调用关闭方法f.close()# 读取文本文件try: f = open("d:/source/pythonLearn/pyth...
2020-04-09 11:56:25
117
原创 python错误处理与调试
错误处理python有一套 try...except...finally...来处理错误,相当于Java的异常,finally最终,都会执行# 错误处理try: print('try...') r = 10 / 0 print('result:', r)except ZeroDivisionError as e: print('except:', e)fi...
2020-04-08 18:12:45
137
原创 python面向对象编程
类python类,构造方法是固定的__init__ ,所有方法第一参数都是self表示本身,调用的时候,并不需求传selfclass Student(object): def __init__(self, name, score): self.name = name self.score = score def get_grade(self):...
2020-04-07 17:28:09
133
原创 Python函数式编程
函数式编程的理解函数本身也是变量,可以吧函数本身作为参数传入另一个函数,还允许返回一个函数。高阶函数map映射,map(fun, iterable) fun为映射规则 iterable为可迭代的变量。例如,将[1, 2, 3…9]转化为[1, 4, 9, … 81]#可以使用生成序列[x*x for x in range[1, 10]]#现在使用mapdef f(x): ...
2020-04-05 17:21:20
110
原创 Python的高级特性
切片切片用于截取数组的一个片段,可用于list, tuple, string表示方法[start, end] 截取[start, end)片段,注意不包含endstart可以省略,省略表示默认0end可以省略,省略表示到结尾L=list(range(10)) #创建一个list,[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]L[3:5] #表示截取L[3]-L[5],...
2020-04-04 17:14:17
136
原创 Python函数
python内置函数int('123') #转化为int,返回 123int(12.34) #转化为int, 返回12float('12.34') #转化为float,返回12.34str(1.23) #转化为string,返回 '1.23'自定义函数格式在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的...
2020-04-03 18:35:05
157
原创 Python基础语法
Python的数据类型python变量,不用声明类型,且变量可以赋值不同类型。python的整数没有大小限制.python的浮点数也没有大小限制,但是超出一定范围就直接表示为inf(无限大)。# 整数a=100a=0xff00#浮点数a=3.14a=1.23e9 #相当10的9次方#字符串a="abc"a='abc'a='I\'m OK'#布尔值a=Truea=...
2020-04-03 17:23:21
174
原创 Python HelloWorld
实现第一个Python 程序命令行模式即windows的cmd模式在命令行模式下,可以执行python文件。python xxx.pyPython交互模式在命令行模式下,敲命令python,就进入了python交互模式。退出交互模式eixt()输入输出name = input() #用户输入print('hello,', name) #打印,遇到逗号会输出一个空格name ...
2020-04-03 15:14:35
137
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人