
移动开发
文章平均质量分 70
华仔狂战
努力吧啊!
展开
-
基于LinkedList高性能android列表适配器
高性能的LinkedList的android适配器数据结构!原创 2023-03-06 22:37:57 · 464 阅读 · 0 评论 -
Android退出应用后是否需要关闭数据库?
Android 系统为我们提供了 SQLiteOpenHelper 辅助完成 SQLiteDatabase 的创建,通过 getReadableDatabase / getWriteableDatabase 方法分别获取只读或可读/写的 SQLiteDatabase 对象;2、SQLiteDatabaseSQLiteDatabase 的openInner方法中会执行 的数据库连接池 SQLiteConnectionPool的open方法:3、SQLiteConnectionPool 连接缓存池SQ原创 2022-07-01 20:39:50 · 1240 阅读 · 0 评论 -
UIAutomatorViewer排查问题
排查一个弹窗展示的问题,不知道为什么会无缘无故的出现一个弹窗原创 2022-07-01 20:32:20 · 842 阅读 · 0 评论 -
工信部敏感权限Android端排查快速检索
现在工信部针对android客户端安全审核的要求越来越严格,列了很多项目去检查,总结了关键的方法,只要检查有这些方法 就一定是涉及到敏感权限了:原创 2022-06-16 18:05:57 · 1386 阅读 · 0 评论 -
详解Java反射机制
在头条上看到的一篇比较好的文章 但是被下架了 还好我已经保存了(头条不知道为什么总爱下架别人的文章 所以以后看到好的文章一定要save下来)反射是程序在运行状态下,动态的获取某个类的内部信息的一种操作。例如:类名,包名,所有属性的集合,所有方法的集合,构造方法的集合等。该操作发生在程序的运行时状态,所以编译器管不着有关反射的一些代码,通常只有在运行时才能暴露出程序的内部错误。反射的核心转载 2017-05-14 23:30:49 · 243 阅读 · 0 评论 -
android开发-Glide源码分析
ImageviewTarget包含了Imageview以及其他的生命周期的回调比如成功了、失败了、异常的他是在ontoGenericRequst包含了他的 错误资源、展位资源、动画设置等一切设置的属性都在这里DrawableTypeRequest中的构造方法中 if (transcoder == null) { transcoder = gli原创 2017-10-10 08:21:34 · 474 阅读 · 0 评论 -
android开发-类加载
apk的目录AndroidManifest.xmlassets 这里的资源是没有id的lib apk的so库MATE-INF 存放的是签名信息R 目录 整个项目的资源文件resource.arsc 资源的索引classes.dex 优化过的class文件如果有分包,那么就有多个dex那么就有多了classes2.dex分包解决65535的问题 ,android dali...原创 2017-10-09 10:02:04 · 316 阅读 · 0 评论 -
android开发-Activity的启动过程
startActivity启动的是startActivityForResult在startActivityForResult中启动了instrumentation的execStartActivity。instrumentation因其强大的跟踪application及activity生命周期的功能,用于android 应用测试框架中,被做为基类使用然后通过ActivityGroup的s原创 2017-10-08 20:39:09 · 748 阅读 · 0 评论 -
android开发-冷启动优化
冷启动冷启动是从系统从没有任何app进行的信息,到第一个页面显示出来,1、Zygote进行中fork创建一个新的进程2、创建和初始化Application类,创建MainActivity类3、setContentView方法会执行inflate布局,onCreate/OnStart、OnResume4、contentView的measure/layout/draw显示在界面上原创 2017-10-08 14:47:45 · 397 阅读 · 0 评论 -
Android之性能优化
一.布局优化1、删除布局中无用的控件与层级2、选择性能较低的布局,比如如果布局既可以使用linearlayout也可以使用relativelayout 那么就采用linearlayout,因为relativelayout的功能比较复杂,他的布局需要更多的cpu时间,framelayout和linearlayout都是比较高效viewgroup,如果单纯的通过framelayout或者fra原创 2017-05-14 21:00:36 · 980 阅读 · 0 评论 -
深入理解JVM之JVM内存区域与内存分配
转自:http://www.cnblogs.com/wangjzh/p/5258254.html在学习jvm的内存分配的时候,看到的这篇博客,该博客对jvm的内存分配总结的很好,同时也利用jvm的内存模型解释了java程序中有关参数传递的问题。 博客出处: http://www.cnblogs.com/hellocsl/p/3969768.html?utm_source=tuic转载 2017-10-19 23:02:18 · 301 阅读 · 0 评论 -
Android 事件分发的规则概况
事件分发总流程Activity dispatcTouchEvent->ViewGroup dispatcTouchEvent-> OnIntercepteTouchEvent->View dispatcTouchEvent-> OnTouchEvent Activity中的dispatcTouchEventtrue 消费掉false 消费掉...原创 2018-12-27 23:56:58 · 193 阅读 · 0 评论 -
Android ListView以及RecyclerView里面 监听Item可见以及不可见的状态
项目开发中最近 经常遇到这样的需求,就是ListView或者RecyclerView中的ItemView 被展示或者不可见的时候 要被能监听到这个通常是打点的需求。这里我们能想到的是 滚动的监听,无论是ListView或者RecyclerView的监听事件要监听的就是第一个显示的position以及最后显示的position,然后对比上次显示的第一个position和最后一个po...原创 2019-03-09 01:17:21 · 13222 阅读 · 0 评论 -
多层嵌套ViewPager 解决冲突问题
我们在项目中很多得时候会用到Activity+ViewPager+Fragment作为主框架,然后在其中一个Fragment中得列表中 添加一个Banner作为广告位,但是这样 容易有焦点冲突得问题其实很关键地方在我们内部得那个BannerViewPager 这里需要对拦截器 进行编写public class BannerViewPager extends ViewPager ...原创 2019-03-10 11:17:01 · 770 阅读 · 0 评论 -
Android实现滑动的几种方法
参考文章转自:https://blog.youkuaiyun.com/shakespeare001/article/details/51657795文章说了5种方式的滚动方法,说的都没啥毛病。但是OnTouchEvent方法没有说清楚,我想了一阵子之后明白其中的道理 @Override public boolean onTouchEvent(MotionEvent ev) { ...原创 2019-04-17 21:18:10 · 391 阅读 · 0 评论 -
android开发-BroadcastReceiver的底层原理
Receiver的原理一、注册的过程通过ContextWrapper的registerReceiver,但是实际上工作的是ContextImpllai 来完成的真正做注册的是通过registerReceiverInternal方法在这个方法里。注册的过程也是一个进程间通信的过程。把BroadcastReceiver封装成IIntentReceiver,BroadCastReceiv原创 2017-10-08 19:36:19 · 1099 阅读 · 0 评论 -
Java常用集合类
集合类集合类主要分为两大类:Collection和Map。容器内每个槽元素个数不同,Collection只有一个,Map是类型是键值对形式1、Collection是List、Set、Queue等集合高度抽象出来的接口,它包含了这些集合的基本操作,它主要又分为三大部分:List和Set,Queue。List接口通常表示一个列表(数组、队列、链表、栈等),其中的元素可以重复,常用实现类原创 2017-10-08 00:39:41 · 403 阅读 · 0 评论 -
android开发-LRU缓存源码解析
LRU ---- least recently used.顾名思义,是根据数据的活跃度进行更新的缓存算法。Java里面实现LRU缓存通常有两种选择,一种是使用LinkedHashMap,一种是自己设计数据结构,使用链表+HashMap(线程不安全) 或者是链表+HashTable(线程安全)一、LRU Cache的LinkedHashMap实现:Linked...原创 2017-10-08 00:18:35 · 352 阅读 · 0 评论 -
android开发-android的消息机制(Handler)源码解析
android的消息机制其实就是Handler的运行机制原创 2017-10-01 18:45:59 · 231 阅读 · 0 评论 -
android开发-自定义控件顺序
构造函数onFinishInflatesetData(我们在onCreate的时候 调用自定义的方法)onAttachedToWindowonMeasure(多次)onSizeChangedonLayout(多次)onDraw原创 2017-09-29 22:07:37 · 456 阅读 · 0 评论 -
android开发-Binder
两个进程 分配的是AIDL中产生的Binder 文件中 有两个类一个是Stub、一个是Proxy进程A想访问进程B 需要访问 进行B在binder中的一个引用 这个引用就存着进程B 的AIDL的描述Binder驱动要放着很多Binder引用,因为不止一个服务要进行进程间通信,准定有很多的服务要进行进程间通信原创 2017-09-30 10:44:05 · 481 阅读 · 0 评论 -
Android Bitmap使用心得
Bitmap 在android开发的过程途中有很重要的地位特别是在处理内存溢出问题上有着居住轻重的地位,可以说是居功至伟啊!BitmapFactory.create的时候 ALPHA_8 表示8位Alpha位图,即A=8,一个像素点占用1个字节,它没有颜色,只有透明度 ARGB_4444 表示16位ARGB位图,即A=4,R=4,G=4,B=4,一个像素点占4+4+原创 2017-05-14 15:15:44 · 379 阅读 · 0 评论 -
android开发-Activity生命周期
Activity的活动状态Running、Pause、Stop、KilledActivity的生命周期onCreate->OnStart->onResumeonPause->onStop(如果新的Activity设置了透明主题 那么原来的Activity不走onStop 因为他还是可见的)onRestart->onStart->onResume 其他的页面 返回来之后的生命周期原创 2017-09-28 10:06:14 · 296 阅读 · 0 评论 -
被杀死的App能否通过广播唤醒
转自:https://zhuanlan.zhihu.com/p/20933603最近在做一个需求:程序没有桌面图标,安装后能够自动将其插件添加到Launcher上,也就是程序在未启动的情况下,能够完成一些操作。能够想到的方案是在AndroidMainifest.xml中静态注册一个广播,监听系统的某些广播达到触发应用完成操作的目的,但现象是:程序安装后,在未启动的情况下无法接收到系统的转载 2017-09-27 22:34:54 · 3633 阅读 · 0 评论 -
android开发-线程池
android的线程池ThreadPoolExcutor ,他是实现了Excutor接口ThreadPoolExcutor最重要的是他的构造函数int corePoolSize 核心线程的数目 线程启动之后 无论是否空闲 会一直存在int maxiumPoolSize 最大线程数目 如果任务比较多 会创建一些临时的线程 临时线程与核心线程 一共的最大的数目 lon原创 2017-10-02 00:42:39 · 399 阅读 · 0 评论 -
android开发-BroadcastReceiver的种类
1、广播的种类:普通广播、有序广播、粘性广播、本地广播2、广播的注册方式:静态注册、和动态注册静态的注册是在应用安装的时候由系统自动完成注册,与其他三大组件一样都是由系统在安装时,由PMS(PackageManagerService)来完成整个注册的过程动态注册是由ContextWrapper的registerReceiver方法开始的,具体的实现是由ContextIm原创 2017-09-29 19:25:55 · 651 阅读 · 0 评论 -
android开发-IntentService的原理(非主线程创建Handler的情况)
一、IntentServiceIntentService是一个特殊的Service,继承自Service并且是一个抽象类,因此必须创建对他的子类才能使用IntentService。IntentService可以用于执行后台耗时的任务,执行完毕之后会自动销毁Service因为是Service的原因,所以他的优先级比单纯的线程要高很多,所以IntentService比较适合执行优先级较原创 2017-10-03 17:55:18 · 469 阅读 · 0 评论 -
android开发-横竖屏切换生命周期(非网传版)
android横竖屏切换的生命周期开源帮助android获得了飞速的发展,开源也导致了数不清的碎片问题。android的前期系统就是一个半成品,不成熟的系统以及google的快速迭代开发,导致厂家完全跟不上google的步伐,你2.3的bug还没改完,4.0就出来了,4.0的bug还在处理,4.1出来了,最后的结果就是,手机厂家给每部手机一个系统版本,并且不能升级。最后苦逼的就是广大的程序转载 2017-09-29 21:41:44 · 171 阅读 · 0 评论 -
android开发-UI卡顿总结
UI卡顿我们人眼的对于画面流畅的最低标准时每秒60帧,换算成一帧是16毫秒也就是我们在绘制下一帧的时间不能超过60毫秒我们要防止画面的过度绘制1、在ui线程做了轻微的耗时操作2、减少不必要的背景绘制,比如根view设置了背景图片,而子View也设置背景图并且覆盖了父View3、使用ViewStub惰性加载,我们的View设置了setVisible(Gone)的时候 其实原创 2017-10-08 14:06:24 · 354 阅读 · 0 评论 -
android开发-android序列化
android序列化有两种实现Seriziable接口实现Parcelable接口原创 2017-10-03 11:34:44 · 239 阅读 · 0 评论 -
android开发-Fragment生命周期
1、Fragment被称为第五大组件(1)为什么叫第五大组件Fragment有自己的生命周期,起初是被用来在大屏幕设备上 比如pad上做UI适配,一般与viewPager搭配使用可以灵活的动态的加载到Activity与Activity相比,更加节省内存切换UI的效果更加舒适使用频率上比较多 但是不属于其他的四大组件(2)Fragment加载到Activity的方式一原创 2017-09-29 13:47:28 · 322 阅读 · 0 评论 -
android开发-Service的生命周期
1、启动Service的方式有两种startService以及bindService他们各自的生命周期为startService:onCreate->onCommend 如果多次调用startService方法 那么会多次执行onCommend方法bindService: onCreate ->onBind 如果其他的Activity也绑定了服务那么 不会调用onBind回调原创 2017-09-29 11:45:46 · 509 阅读 · 0 评论 -
android开发-组件化开发基础
1、组件化开发很重要的一点是Schema 隐式跳转这里有一个很好的例子http://blog.youkuaiyun.com/ruingman/article/details/70054670也就是说在manifest的Activity中的data注册信息xl://goods:8888/goodsDetail?goodsId=10011002 通过上面的路径 Schema、Host、po原创 2017-09-29 09:59:30 · 271 阅读 · 0 评论 -
android开发-Hashmap源码解析
HashMap的特性如HashMap可以接受null键值和值,而Hashtable则不能;HashMap是非synchronized;HashMap很快;以及HashMap储存的是键值对等等 int DEFAULT_INITIAL_CAPACITY =1<<4:默认的初始容量为16 int MAXIMUM_CAPACITY = 1 << 30:最大...原创 2017-10-07 19:42:04 · 373 阅读 · 0 评论 -
android开发-事件分发详解
事件分发源码分析事件最先传递个当前的Activity,由Activity的dispatchTouchEvent来进行时间派发具体的工作由Activity内部的Window来完成的,Window会将事件传递给decorview,decorview就是当前视图的底层容器dispatchTouchEvent返回值为true 表示事件被他或者她的子view给消化了如果返原创 2017-10-07 00:12:11 · 263 阅读 · 0 评论