- 博客(43)
- 资源 (55)
- 收藏
- 关注
原创 Android系统版本号对照表
系统名称3433323130292827262524232120Android 3.0Android 2.3.3Android 2.3Android 2.2Android 2.1Android 2.0Android 1.6Android 1.5Android 1.1Android 1.0。
2023-06-15 11:13:18 13084
原创 Android退出应用后是否需要关闭数据库?
Android 系统为我们提供了 SQLiteOpenHelper 辅助完成 SQLiteDatabase 的创建,通过 getReadableDatabase / getWriteableDatabase 方法分别获取只读或可读/写的 SQLiteDatabase 对象;2、SQLiteDatabaseSQLiteDatabase 的openInner方法中会执行 的数据库连接池 SQLiteConnectionPool的open方法:3、SQLiteConnectionPool 连接缓存池SQ
2022-07-01 20:39:50 1156
原创 工信部敏感权限Android端排查快速检索
现在工信部针对android客户端安全审核的要求越来越严格,列了很多项目去检查,总结了关键的方法,只要检查有这些方法 就一定是涉及到敏感权限了:
2022-06-16 18:05:57 1288
原创 Android实现滑动的几种方法
参考文章转自:https://blog.csdn.net/shakespeare001/article/details/51657795文章说了5种方式的滚动方法,说的都没啥毛病。但是OnTouchEvent方法没有说清楚,我想了一阵子之后明白其中的道理 @Override public boolean onTouchEvent(MotionEvent ev) { ...
2019-04-17 21:18:10 360
原创 多层嵌套ViewPager 解决冲突问题
我们在项目中很多得时候会用到Activity+ViewPager+Fragment作为主框架,然后在其中一个Fragment中得列表中 添加一个Banner作为广告位,但是这样 容易有焦点冲突得问题其实很关键地方在我们内部得那个BannerViewPager 这里需要对拦截器 进行编写public class BannerViewPager extends ViewPager ...
2019-03-10 11:17:01 736
原创 Android ListView以及RecyclerView里面 监听Item可见以及不可见的状态
项目开发中最近 经常遇到这样的需求,就是ListView或者RecyclerView中的ItemView 被展示或者不可见的时候 要被能监听到这个通常是打点的需求。这里我们能想到的是 滚动的监听,无论是ListView或者RecyclerView的监听事件要监听的就是第一个显示的position以及最后显示的position,然后对比上次显示的第一个position和最后一个po...
2019-03-09 01:17:21 12997
原创 Android 事件分发的规则概况
事件分发总流程Activity dispatcTouchEvent->ViewGroup dispatcTouchEvent-> OnIntercepteTouchEvent->View dispatcTouchEvent-> OnTouchEvent Activity中的dispatcTouchEventtrue 消费掉false 消费掉...
2018-12-27 23:56:58 167
原创 Java类的初始化顺序
Java类的初始化顺序属性、方法、构造方法、和自由块都是类中的成员,在创建对象的时候各成员的执行顺序如下1、父类静态成员和静态初始化块,按在代码中出现的顺序依次执行2、子类静态成员和静态初始化块,按在代码中出现的顺序依次执行3、父类实例成员和实例初始化块,按在代码中出现的顺序依次执行4、执行父类构造方法5、子类实例成员和实例初始化块,按在代码中出现的顺序依次执行6、执行...
2018-12-27 23:54:57 161
转载 Java自定义类的加载器
Java自定义类的加载器 转自:Java的ClassLoader加载机制一看你就懂,超详细java中的ClassLoader详解深入理解Java类加载器(ClassLoader) 一、ClassLoader作用Java程序在运行的时候,JVM通过类加载机制(ClassLoader)把class文件加载到内存中,只有class文件被载入内存,才能被其他class引用,...
2018-12-27 21:07:31 34308 19
原创 String字符串转化为int类型
通常我们使用Integer的parseInt解析数字型字符串,它的内部是怎么解析的呢? String num="-2147483645"; int numInt=parseInt(num,10);那么Integer中的parseInt方法是如何做的呢?public static int parseInt(String s, int radix) thr...
2018-10-29 18:45:25 20710
原创 粘性的ListView和ScrollView
粘性的ListView和ScrollView 先看一下效果ListView的ListView的header上面 有一个粘性的view 在滚动上去时候 他可以固定住,滑动下去之后 又下来了 ScrollView也有这样的效果, 这个是怎么实现的呢?其实他们原理都是一样的!之前总感觉是把这个view remove掉之后 然后再添加到其他ViewGroup上后...
2018-10-10 16:01:10 429
转载 深入理解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 282
原创 TCP/IP 三次握手四次挥手
三次握手第一次握手:host1发送一个TCP标志位SYN=1、ACK=0的数据包给host2,并随机会产生一个Sequence number=3233.当host2接收到这个数据后,host2由SYN=1可知客户端是想要建立连接;Client进入SYN_SENT状态第二次握手:host2要对客户端的联机请求进行确认,向host1发送应答号ACK=1、SYN=1、确认号Acknowl
2017-10-19 19:30:01 265
原创 android开发-Glide源码分析
ImageviewTarget包含了Imageview以及其他的生命周期的回调比如成功了、失败了、异常的他是在ontoGenericRequst包含了他的 错误资源、展位资源、动画设置等一切设置的属性都在这里DrawableTypeRequest中的构造方法中 if (transcoder == null) { transcoder = gli
2017-10-10 08:21:34 443
原创 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 291
转载 Java中的深拷贝(深复制)和浅拷贝(浅复制)
深拷贝(深复制)和浅拷贝(浅复制)是两个比较通用的概念,尤其在C++语言中,若不弄懂,则会在delete的时候出问题,但是我们在这幸好用的是Java。虽然java自动管理对象的回收,但对于深拷贝(深复制)和浅拷贝(浅复制),我们还是要给予足够的重视,因为有时这两个概念往往会给我们带来不小的困惑。浅拷贝是指拷贝对象时仅仅拷贝对象本身(包括对象中的基本变量),而不拷贝对象包含的引用指向的对
2017-10-08 21:46:48 349
原创 android开发-Activity的启动过程
startActivity启动的是startActivityForResult在startActivityForResult中启动了instrumentation的execStartActivity。instrumentation因其强大的跟踪application及activity生命周期的功能,用于android 应用测试框架中,被做为基类使用然后通过ActivityGroup的s
2017-10-08 20:39:09 722
原创 android开发-BroadcastReceiver的底层原理
Receiver的原理一、注册的过程通过ContextWrapper的registerReceiver,但是实际上工作的是ContextImpllai 来完成的真正做注册的是通过registerReceiverInternal方法在这个方法里。注册的过程也是一个进程间通信的过程。把BroadcastReceiver封装成IIntentReceiver,BroadCastReceiv
2017-10-08 19:36:19 1034
原创 android开发-冷启动优化
冷启动冷启动是从系统从没有任何app进行的信息,到第一个页面显示出来,1、Zygote进行中fork创建一个新的进程2、创建和初始化Application类,创建MainActivity类3、setContentView方法会执行inflate布局,onCreate/OnStart、OnResume4、contentView的measure/layout/draw显示在界面上
2017-10-08 14:47:45 365
原创 android开发-UI卡顿总结
UI卡顿我们人眼的对于画面流畅的最低标准时每秒60帧,换算成一帧是16毫秒也就是我们在绘制下一帧的时间不能超过60毫秒我们要防止画面的过度绘制1、在ui线程做了轻微的耗时操作2、减少不必要的背景绘制,比如根view设置了背景图片,而子View也设置背景图并且覆盖了父View3、使用ViewStub惰性加载,我们的View设置了setVisible(Gone)的时候 其实
2017-10-08 14:06:24 335
原创 Java常用集合类
集合类集合类主要分为两大类:Collection和Map。容器内每个槽元素个数不同,Collection只有一个,Map是类型是键值对形式1、Collection是List、Set、Queue等集合高度抽象出来的接口,它包含了这些集合的基本操作,它主要又分为三大部分:List和Set,Queue。List接口通常表示一个列表(数组、队列、链表、栈等),其中的元素可以重复,常用实现类
2017-10-08 00:39:41 383
原创 android开发-LRU缓存源码解析
LRU ---- least recently used.顾名思义,是根据数据的活跃度进行更新的缓存算法。Java里面实现LRU缓存通常有两种选择,一种是使用LinkedHashMap,一种是自己设计数据结构,使用链表+HashMap(线程不安全) 或者是链表+HashTable(线程安全)一、LRU Cache的LinkedHashMap实现:Linked...
2017-10-08 00:18:35 339
原创 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 328
原创 android开发-事件分发详解
事件分发源码分析事件最先传递个当前的Activity,由Activity的dispatchTouchEvent来进行时间派发具体的工作由Activity内部的Window来完成的,Window会将事件传递给decorview,decorview就是当前视图的底层容器dispatchTouchEvent返回值为true 表示事件被他或者她的子view给消化了如果返
2017-10-07 00:12:11 257
原创 android开发-IntentService的原理(非主线程创建Handler的情况)
一、IntentServiceIntentService是一个特殊的Service,继承自Service并且是一个抽象类,因此必须创建对他的子类才能使用IntentService。IntentService可以用于执行后台耗时的任务,执行完毕之后会自动销毁Service因为是Service的原因,所以他的优先级比单纯的线程要高很多,所以IntentService比较适合执行优先级较
2017-10-03 17:55:18 444
原创 android开发-AsyncTask源码解析
AsyncTask的原理还是线程池+InternalHandler(继承于Handler)一、AsyncTask五个核心方法onPreExecute 主线程执行 在异步任务执行之前会先被调用 用来做初始化工作doInBackground(Params ...param) 在线程池中执行,此方法用来执行异步任务 在此方法中 通过publishProgress方法来更新任务进
2017-10-02 18:46:01 241
原创 android开发-线程池
android的线程池ThreadPoolExcutor ,他是实现了Excutor接口ThreadPoolExcutor最重要的是他的构造函数int corePoolSize 核心线程的数目 线程启动之后 无论是否空闲 会一直存在int maxiumPoolSize 最大线程数目 如果任务比较多 会创建一些临时的线程 临时线程与核心线程 一共的最大的数目 lon
2017-10-02 00:42:39 378
原创 android开发-Binder
两个进程 分配的是AIDL中产生的Binder 文件中 有两个类一个是Stub、一个是Proxy进程A想访问进程B 需要访问 进行B在binder中的一个引用 这个引用就存着进程B 的AIDL的描述Binder驱动要放着很多Binder引用,因为不止一个服务要进行进程间通信,准定有很多的服务要进行进程间通信
2017-09-30 10:44:05 426
原创 android开发-自定义控件顺序
构造函数onFinishInflatesetData(我们在onCreate的时候 调用自定义的方法)onAttachedToWindowonMeasure(多次)onSizeChangedonLayout(多次)onDraw
2017-09-29 22:07:37 435
转载 android开发-横竖屏切换生命周期(非网传版)
android横竖屏切换的生命周期开源帮助android获得了飞速的发展,开源也导致了数不清的碎片问题。android的前期系统就是一个半成品,不成熟的系统以及google的快速迭代开发,导致厂家完全跟不上google的步伐,你2.3的bug还没改完,4.0就出来了,4.0的bug还在处理,4.1出来了,最后的结果就是,手机厂家给每部手机一个系统版本,并且不能升级。最后苦逼的就是广大的程序
2017-09-29 21:41:44 165
原创 android开发-BroadcastReceiver的种类
1、广播的种类:普通广播、有序广播、粘性广播、本地广播2、广播的注册方式:静态注册、和动态注册静态的注册是在应用安装的时候由系统自动完成注册,与其他三大组件一样都是由系统在安装时,由PMS(PackageManagerService)来完成整个注册的过程动态注册是由ContextWrapper的registerReceiver方法开始的,具体的实现是由ContextIm
2017-09-29 19:25:55 626
原创 android开发-Fragment生命周期
1、Fragment被称为第五大组件(1)为什么叫第五大组件Fragment有自己的生命周期,起初是被用来在大屏幕设备上 比如pad上做UI适配,一般与viewPager搭配使用可以灵活的动态的加载到Activity与Activity相比,更加节省内存切换UI的效果更加舒适使用频率上比较多 但是不属于其他的四大组件(2)Fragment加载到Activity的方式一
2017-09-29 13:47:28 294
原创 android开发-Service的生命周期
1、启动Service的方式有两种startService以及bindService他们各自的生命周期为startService:onCreate->onCommend 如果多次调用startService方法 那么会多次执行onCommend方法bindService: onCreate ->onBind 如果其他的Activity也绑定了服务那么 不会调用onBind回调
2017-09-29 11:45:46 499
原创 android开发-组件化开发基础
1、组件化开发很重要的一点是Schema 隐式跳转这里有一个很好的例子http://blog.csdn.net/ruingman/article/details/70054670也就是说在manifest的Activity中的data注册信息xl://goods:8888/goodsDetail?goodsId=10011002 通过上面的路径 Schema、Host、po
2017-09-29 09:59:30 259
原创 android开发-Activity生命周期
Activity的活动状态Running、Pause、Stop、KilledActivity的生命周期onCreate->OnStart->onResumeonPause->onStop(如果新的Activity设置了透明主题 那么原来的Activity不走onStop 因为他还是可见的)onRestart->onStart->onResume 其他的页面 返回来之后的生命周期
2017-09-28 10:06:14 278
转载 被杀死的App能否通过广播唤醒
转自:https://zhuanlan.zhihu.com/p/20933603最近在做一个需求:程序没有桌面图标,安装后能够自动将其插件添加到Launcher上,也就是程序在未启动的情况下,能够完成一些操作。能够想到的方案是在AndroidMainifest.xml中静态注册一个广播,监听系统的某些广播达到触发应用完成操作的目的,但现象是:程序安装后,在未启动的情况下无法接收到系统的
2017-09-27 22:34:54 3587
JAVA2核心技术第1卷:基础知识(原书第7版).part1
2012-04-09
SoftReference、WeakReference和PhantomRefrence分析和比较
2012-03-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人