- 博客(26)
- 资源 (4)
- 收藏
- 关注
原创 性能优化ANR系列之-Service ANR原理
公众号:代码与生活手记。持续分享Android进阶知识,App性能优化,Framework学习,应用架构设计。
2025-03-28 07:00:00
244
原创 性能优化ANR系列之-BroadCastReceiver ANR原理
看上面的代码一直有个问题,我刚开始一直没有看明白:搜了整个代码,发现只有一个地方设置调用了 `cancelBroadcastTimeoutLocked`,而且是**在一个广播 `BroadCastRecord` 的所有接受者执行完成后**,才调用`cancelBroadcastTimeoutLocked`取消的。为什么不和 `Service` 的一样呢:**Service 的检测是启动**每个 Service**之前会设置一个 ANR 的检测任务,执行完 Service 之后,就会取消改检测任务?
2025-03-26 08:43:39
746
原创 Glide内存优化之GroupedLinkedMap
相信很多人看到这个数据结构,觉得一脸懵,因为很少甚至都没有见到过这个数据结构。其实这个数据结构是Glide在实现Bitmap缓存池时,自己定义的一个数据结构,功能类似我们常用的HashMap,但是又和HashMap不太一样,个哦能上做了一些修改。这个数据结构虽然简单,但是它的实现思路和背后设计的原因还是很值得我们学习和研究的,所以今天我们就来看下这个结构。本文基于源码版本学习(后续会持续更新《深入学习Glide的专栏》)
2023-08-22 22:03:46
126
原创 解决LiveData数据倒灌的新思路
对于LiveData“数据倒灌”的问题,我相信很多人已经都了解了,这里提一下。所谓的“数据倒灌”:其实是类似粘性广播那样,当新的观察者开始注册观察时,会把上次发的最后一次的历史数据传递给当前注册的观察者。比如在在下面的例子代码中:方法发送了一次数据,当下面调用LiveData的方法时,会立即打印,这就是上面说的“数据倒灌”现象。原因其实也很简单,其实就是 内部有一个字段,记录版本,其初始的 是-1,当我们调用了其 或者 ,其 会;对于每一个观察者的封装 ,其初始 也为,也就是说,每一个新注册的观察
2023-08-22 08:00:00
201
转载 MyEclipse 常用设置
详细链接:http://www.360doc.com/content/13/0308/07/11717684_270099041.shtml
2014-06-18 13:26:30
383
原创 命令行下导出ANDROID手机下的数据库方法
因为我的机子上在调试使用SQLiteDatabase是file explorer 无法显示出手机的信息,于是尝试则从命令行导出,现在开始。。。 首先,CMD进入到ms-dos,敲入adb shell,进入到shell页面中 然后敲入su,在你的手机上会弹出一个对话框,然后点击确定(这时候你的手机要在连接中,否则怎么查看你的数据库?); 然后,使用cd命令进入到/data/d
2014-06-09 00:40:56
633
原创 vim 中的折叠问题
vim 提供6中折叠方式manual 手工定义折叠indent 更多的缩进表示更高级别的折叠expr 用表达式来定义折叠syntax 用语法高亮来定义折叠diff 对没有更改的文本进行折叠marker 对文中的标志折叠可用选项 'foldmethod'来设定折叠方式:setfdm=*****。注意,每一种折叠方式不兼容,即:你不能用expr又用mar
2014-06-07 21:29:04
624
原创 C++的迭代器和指针
1:首先迭代器是一种专门为访问容器而设计的一种数据类型,同时也是一种数据结构,类模板,他提供来比下标操作更为通用的 方法,对所有的容器有适用; 2:每个容器都有自己的iterator类型,如vector::iterator 3:begin和end操作,begin()返回迭代器的第一个元素,end()返回容器最后一个元素的下一个元素,如果vector为空,则begin返回
2014-06-07 17:19:53
5482
原创 C++中类继承的构造函数问题
若是一个类,在重新定义了有参数的构造函数并没有提供默认值后,则默认的构造函数不存在(默认构造函数是就是在没有显式提供初始化式时调用的构造函数。它由不带参数的构造函数,或者为所有的形参提供默认实参的构造函数定义)。若是基类的默认构造函数不存在,则在派生类中,必须调用基类的构造函数,否则报错,若是有默认的构造函数,则可以不调用和初始化,自己会调用默认的构造函数;虚基类的构造函数,如果在虚基类中没有定义
2014-05-29 23:12:52
1353
转载 排序算法
排序(一)初级排序算法选择排序思想:首先,找到数组中最小的那个元素。其次,将它和数组的第一个元素交换位置。再次,在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置。如此往复,直到将整个数组排序。 【图例】图中,x轴方向为数组的索引,y轴方向为待排序元素的值。 选择排序有两个很鲜明的特点:运行时间和输入无关。为了找出最
2014-05-29 23:01:35
719
原创 Sublime配置java
1.创建批处理脚本runJava.bat要想编译运行java程序,需要创建一个批处理脚本。新建文件runJava.bat,文件内容为[plain] view plaincopy@ECHO OFF cd %~dp1 ECHO Compiling %~nx1....... IF EXIST %~n1.class (
2014-04-29 21:59:37
662
原创 how to intall stardict on the ubuntu
Undoubtedlly,the most powerful dictionary on the linux is stardict.Now ,i will tell you how to intall stardict and add dictionares; first ,you shoud download the packages of stardict ,you c
2014-03-22 23:04:12
518
原创 linux密码忘记的方法
Root密码忘了怎么办?——解决办法(图解) Root密码忘了就这么办! 1. 在开机启动的时候能看到这个引导目录(3秒将进入默认),用上下方向键选择你要进入的那个。(图1) 选中后按键盘上的"e"键,进入图2。 图中CentOS引导虽说只有一个,不过 如果你升级过你的系统,那么就有多个。 2. 看到这个画面,上下方向键选择最近的一个内核继续"e"键,进
2014-01-12 19:23:10
432
原创 集线器,交换机,路由器的比较
集线器-------集线器也叫Hub,工作在物理层(最底层),没有相匹配的软件系统,是纯硬件设备。集线器主要用来连接计算机等网络终端。 集线器为共享式带宽,连接在集线器上的任何一个设备发送数据时,其他所有设备必须等待,此设备享有全部带宽,通讯完毕,再由其他设备使用带宽。正因此,集线器连接了一个冲突域的网络。所有设备相互交替使用,就好象大家一起过一根独木桥一样。 集线器不能判断数据包的目的
2013-12-31 21:42:11
683
原创 ubuntu 13.10中的eclipse菜单项无法点击
因为需要,最近在Ubuntu13.10上安装eclipse,安装完后发现其菜单项无法使用,点击无反映,后来网上看看发现是Ubuntu的一个BUG,好像最近没有上身么解决的办法,后来找到一个解决的的办法,在建立的桌面文件中不因该直接的写Exec=/usr/local/java/eclipse/eclipse,而因该改成:Exec=env UBUNTU_MENUPROXY= /usr/local/ja
2013-12-26 22:55:54
644
原创 ASP.NET通过OracleCleint来访问数据库
asp.net访问数据库有多中方法,今天就介绍其中一种方法,其他方法会在后续的文章中继续介绍; 当然了,连接oracle数据库,首先就要配置数据库的连接字符串,这个就不在多说,网上有很多的文章在介绍;然后是在cs文件中加入 using System.Data.OracleClient;,如实没有就通过:vs中的“引用”——.net——using System.Data
2013-08-21 23:35:16
547
原创 JAVA 中选项卡的使用
JAVA中使用选项卡,要用到JTabbledPane这个容器,现在就来说说这个容器的一些用法: 一:JTabbedPane构造函数: JTabbedPane():建立一个空的JTabbedPane对象。 JTabbedPane(int tabPlacement):建立一个空的JTabbedPane对象,并指定摆放位置,其位置有四个,JTabbedPane.RIGHT,JTabbedP
2013-06-12 21:58:03
4400
原创 必须声明表变量 "@P0"
最近在用mssql数据库是,写了如下代码: pre=con.prepareStatement("select * from ?"); pre.setString(1, "BoolMassege"); 发现报:必须声明表变量 "@P0"。然后查了一下帮助文档,发现setstring函数是给表的列赋值,而不能给直接赋表明~
2013-05-21 22:47:52
4765
转载 JFrame 的setDefaultCloseOperation(int) 几个参数的比较
JFrame 的setDefaultCloseOperation(int) 方法参数类型是int型,而且JFrame.EXIT_ON_CLOSE也是int型,下面是相对应的整形数据能作为setDefaultCloseOperation的参数: 0 = DO_NOTHING_ON_CLOSE, 1 = HIDE_ON_CLOSE, 2 = DISPOSE_ON_CLOSE, 3 = EXIT_ON_
2013-05-07 22:53:21
945
转载 j ava中Integer对象和int的区别
一。Integer类型对象之间大小比较1. 使用new Integer()创建的对象:首先,我们知道,在java中,基本类型之间是可以做大小比较的,例如int i=1,int j=2,是可以直接使用关系运算符“”、“==”等符号来做比较的。但在实际开发中,基本类型的包装类更为常用,那么包装类型的比较运算是如何呢?在main方法中执行下面代码:Java代码 In
2013-05-07 17:03:26
683
原创 JAVA和SQL2008
今天在利用JDBC的方法去访问sql2008数据库时,一直不成功,终于自己倒腾了一天,终于弄明白了~~现要在就来和大家分享一下吧; 刚开始看到网上说加jar包,于是下拉三个jar包,可是老是报错,网上一查原来是sql的版本不对,于是又去下了sql2008的jar包(只有一个jar),于是信心满满的开始调试,可是有报错,老是出现No suitable driver found
2013-05-06 21:53:32
437
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人