- 博客(9)
- 收藏
- 关注
原创 数组越界问题
数组越界一般都是list,常见的有Arraylist。for循环问题1、遍历时内做移除操作。private ArrayList<OnOffsetChangedListener> listeners = new ArrayList<>();public void startRemove(View view) {//话说这种写法可以减少计算数组大小的次数,可以提升性能。可是如果数组是变动的,那么这种写法一定有问题要么越界,要么遍历不全。 int length =.
2020-09-27 15:27:30 338
原创 线程的正确用法
线程的正确用法1、什么是进程?什么是线程?进程:进程是指在操作系统中正在运行的一个应用程序。线程:线程是程序运行的基本执行单元。一个APP一般有一个进程,一个进程至少有一个线程。一个主线称也叫UI线程,主要是来执行UI操作。2、为什么要使用多线程?单线程:只有一个队列,所有需要执行任务都在一个线程中排队等待执行,如何前面有任务执行时间较长,后面的任务就一直等待。多线程:有多个队列,任务在不同的队列中,多个队列可以同时执行任务。多线程优点:CPU使用率提升,执行效率提...
2020-09-27 15:25:54 418
原创 Android最简单的线程调度工具
1、背景介绍。Android是多线程的系统,线程分为UI线程与工作线程。UI线程:app的主要线程:主要负责UI的操作。工作线程:主要负责除了UI线程操作的一切线程。问题所在:但是很多开发者觉得切换线程麻烦并且容易内存泄漏,所以就不怎么去切换线程操作,能在主线称进行的操作就不在工作线程中执行。但是这样会导致 一、UI线程工作繁重。二、并且系统流畅性差。三、不定时的anr。不使用工作线程来做非UI线程的工作的原因:使用工作线程来做非UI线程的工作,需要开启线程,还要考虑到类被销毁后内存
2020-09-27 15:09:53 605
原创 简化Parcelable的使用
前言在使用序列化的时候发现使用google推荐的Parcelable使用过于复杂,重复工作量太大。因此决定优化一下。在经过一些构思与尝试之后,觉得使用反射来读写bean变量应该是可行的。于是开始行动。1、首先创建通过反射读写bean的工具类public static void writeParcelableBean(Parcelable classThis, Parcel des...
2019-02-27 17:02:11 1055 1
原创 Android反编译APK修改内容重新打包签名
反编译Apk,修改文件重新打包APk。修改资源文件重新打包。1、使用apktool直接反编译apk 1.1配置apktool环境: 1.1.1打开apktool官网 https://ibotpeaches.github.io/Apktool/install/ ...
2018-12-14 15:05:28 3737 1
原创 单例模式
一、饿汉(消耗资源) private static OkHttpClient okHttpClient = new OkHttpClient(); private okHttpClient(){} private OkHttpClient getInstance(){ return okHttpClient; } 二、懒汉 1、普通模式(会有线程安全问题) priv...
2018-03-02 17:55:13 120
原创 调用jni的时候出现transformNativeLibsWithStripDebugSymbolForRelease空指针异常
transformNativeLibsWithStripDebugSymbolForRelease
2017-06-06 11:14:15 4884
原创 非常简单的OKhttp封装工具类
Map, String> httpParams = new HashMap;httpParams.put("devicecode", "343257687798790");com.tangzy.myokhttp.async.bean.ResponseResult responseResult = AsyncOkHttpManager.asyncRequest("https://www.bai
2016-07-07 17:24:15 342
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人