自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(84)
  • 资源 (3)
  • 收藏
  • 关注

原创 android linkToDeath内存泄露分析

Register the recipient for a notification if this binder goes away. //注册binder死亡的通知

2023-09-14 11:02:33 687

原创 android system_server WatchDog简介

android系统中SystemServer WatchDog的主要作用是监控SystemServer进程的运行状态,防止其卡住或者死锁。

2023-09-02 02:49:51 1102

原创 android内存 smaps解析

anon:dalvik-main space (region space)] : 920 kB //堆内存在这里分配,不设置largeSpace的话上限是256M。[anon:dalvik-zygote space] : 3252 kB //zygote进程的初始空间。[anon:libc_malloc] : 31422 kB //通过malloc接口申请的内存,图片内存分配之类的。GL mtrack 是gpu占用的内存。

2023-08-23 21:30:11 1284

原创 应用冷启bindservice耗时

1. 查看binderservice代码发现bindservice如果不传入excutor参数会在主线程回调connection.onserviceconnected()ap主线程调度到了cpu 7超大核进程冷启动 ,但是在init阶段cpu 7一直处于繁忙状态导致没有分配时间片给init,导致sdk初始化慢。背景:sdk初始化的时候耗时过长,而sdk,init方法中只有一个bindservice及一些变量的初始化,却好事100ms。bindservice传递excutor参数,回调在子线程。

2023-08-13 01:40:29 309

原创 uc浏览器启动慢(1)应用首帧耗时

uc浏览器启动慢

2023-03-09 19:20:24 481

转载 Ubuntu 18.04 环境下编译Android 源码

简书地址:www.jianshu.com/p/2beae17c9…android源码编译的四个流程:1.源码下载;2.构建编译环境;3.编译源码;4模拟器运行1.源码下载首先确保自己已经安装了Git.sudo apt-get install gitgit config –global user.email “[email protected]”git config –global user.n...

2020-03-25 12:24:17 2154

原创 Recyclerview嵌套recyclerview滑动冲突解决(多指方案)

public class QRecyclerView extends RecyclerView { private int mStartX = 0; private int mStartY = 0; private int mTouchSlop = 0; private int mScrollPointerId = -1; public QRecycle...

2019-10-16 14:14:18 3179

转载 java lamda表达式

作者:Mingqi链接:https://www.zhihu.com/question/20125256/answer/324121308来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。答主对Java比较熟悉,就用Java来讲一讲吧。什么是Lambda?我们知道,对于一个Java变量,我们可以赋给其一个“值”。如果你想把“一块代码”赋给...

2019-08-18 09:55:20 1106

原创 java判断是否是emoji字符(史上最全)

int codePoint = Character.codePointAt(chars, i);//使用charcode而不是直接用char是因为有些字符需要两个char来表示 lowsurragate highsurrgateisEmojiCharacter(codePoint); public static boolean isEmojiCharacter(int codePoint...

2019-07-24 17:39:43 10464

原创 rxjava2.0 线程切换的原理及SubscribeOn,ObserveOn的用法

android开发过程中经常会用到线程切换,比如数据加载、文件存储、数据库操作等都是在io线程处理,而处理结果的展示刷新ui需要在ui线程进行。如果不用rxjava,我们可能会asycTask,或者retrofit自己默认的callback来在ui线程刷新ui。但是当我们的操作变复杂时,比如一个接口的数据依赖于另一个接口的返回,或者一次上传多张图片功能,就会造成接口多层嵌套进而增加维护成本注:...

2019-06-06 16:41:49 1431

原创 五分钟搞懂Android智能指针SP WP

问题不像java这种runtime提供内存回收机制的语言,c c++开发中经常困扰开发者的是变量的分配与回收,当new完对象而忘记delete就会造成内存泄漏,如果delete了还在别处引用当对象,就会形成野指针解决一种内存回收策略叫引用计数,当对象被引用时,引用计数就+1,不再引用的时候引用计数就-1,当引用计数为0时,就回收对象。这种内存回收机制的问题是不能回收循环引用的对象,a对象有b...

2019-05-24 22:00:06 1072 1

原创 git中统计代码行数

查看git上个人代码量git log --author="username" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc

2017-11-16 10:20:14 79874 3

原创 看源码了解Gson excludeStrategy的使用

使用exclude strategy的场景:我们知道Gson 序列化的时候通常有些字段不需要seralize到json中去,gson给我们提供了一个annotaion,Expose 定义: @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) public @interface Exp

2017-11-09 19:07:29 525

原创 heapsort in PriorityQueue

先上图:size = 8Pi = (Ci+1)/2-1CLi  = 2Pi+1CRi = CLi+1备注:Pi为父节点index           Ci为子节点index          CLi为左子节点index          CRi为右子节点indexPriorityQueue中的数据结构为:Object[] queue ,是一个

2017-11-09 14:55:30 279

原创 忽略java 运算符的优先级 的一次教训

java运算符号的顺序表,之前没有硬记导致今天遇到了一个诡异的bug 当时是这样写的 :onFail("数据返回为空或格式不正确"+body!=null?body.getStatus():"",null); 并且这个条件很少会走到,结果导致上线几个版本才因为服务器的一次异常导致了crash, 反编译了声称的apk文件,结合上面的运算符的优先级可以如下:if("数据返

2017-10-31 19:10:37 306

原创 android 软件盘设置搜索失效问题处理

同样的问题解决方案很多,但都没有解决我的问题:1:设置xml中设置android:imeOptions="actionSearch"java代码中设置editText.setImeOptions(EditorInfo.IME_ACTION_SEARCH)2:设置 android:inputType="text" 或 android:singleLine="true"

2017-10-09 11:17:19 407

原创 android small资源加载

1:不用small 怎么获取资源    Resouces r = context.getResources();    获取字符串  r.getString(intValue);    获取图片     r.getDrawable(intValue);2:怎么获取其它package包的资源   方法一:   Context otherContext

2017-09-25 18:43:42 614

原创 Android mvc,mvp , mvvm三种设计模式的选择实践

google 官方mvp实践没有一种放之四海皆准的设计模式•追随业务•遵循最基础的原则•     1: 业务逻辑简单,没有可复用模块的直接mvc•     2: 有可服用模块 抽取presenter层•     3: 业务模型,ui框架变动不频繁采用mvp•     4:  mvvm

2017-09-15 17:36:16 455

原创 sqlcipher加密已有数据库及其时机

最近我们做的移动im打算将数据库加密,我们的数据库是对数据库的简单封装 ,调研了一些开源数据库加密工具,觉得sqlcipher用户会多一点,而且开源。所以打算就用它了  sqlcipher的使用可以参考下这两篇文章:  http://www.jianshu.com/p/3baf311f8c8c  https://www.zetetic.net/sqlcipher/sqlcipher-a

2017-08-26 05:45:49 6094 1

原创 difference between clear data and clear cache ? Android

setting中清除代码1: 清空缓存packageManager 中 packageManagerService -> deleteApplicationCacheFilesAsUser(final UserEnvironment userEnv = new UserEnvironment(curUser);clearDirectory

2017-06-14 11:29:18 645

翻译 api version最佳实践

原文链接:     这是一个好的并且有意思的问题,url设计是restful api最重要的部分,因此,是一种对用户的长期承诺。    随着应用的演化,应用的api应该保持较少的扩展,就像编程语言本身一样。

2017-01-25 18:47:59 928

原创 small插件化方案踩坑

集成方案基本思想:把可变的集成到lib或者app中,不可变的以stub的方式集成 集成方案:保持现有的组件化方案不变,将openali,utils以stub的方式集成到工程中和普通开发之间的区别##缺点:1:service,provider集成到宿主中 2:activity 仅支持launchmode属性,如果有process,configchanged等属性需要在宿主中注册

2017-01-12 19:49:58 1551

转载 Android 镜像使用帮助

注意: 本镜像是 AOSP 镜像,Android SDK因版权原因,我们不能提供镜像服务。参考 Google 教程 https://source.android.com/source/downloading.html, 将 https://android.googlesource.com/ 全部使用 https://aosp.tuna.tsinghua.edu.cn/ 代替即可。由

2016-12-30 11:29:44 997

原创 Service的初始化流程与small插件化框架

1: bind service时序图2: start service时序图3: small 对service的支持--不支持动态加载,需在宿主中注册 通过反射为ActivityThread的mH变量添加callback唯一的功能是确保如果是启动不同的进程中的service,确保所有的插件已经被加载进来4 : 如何支持

2016-12-18 17:06:00 699

转载 Android打包系列 JAR反编译修改后重新打包

在工作中,有些第三方JAR不能满足我们的特殊需求,所以经常会有需要修改JAR的情况,这里给出基本的修改思路,然后再辅以实例。思路使用反编译工具JD-GUI)打开要修改的jar包(如beforeModify.jar),找到jar包中要修改的class文件(如A.class)打开Eclipse新建一个Java工程,并添加一个类(如A.java:该类名与A.class

2016-12-18 16:17:49 3025

原创 android开发 分支管理模型

git android 分支管理

2016-12-12 15:52:18 868

原创 android插件化框架 small对资源的支持

1:不用small 怎么获取资源    Resouces r = context.getResources();    获取字符串  r.getString(intValue);    获取图片     r.getDrawable(intValue);2:怎么获取其它package包的资源   方法一:   Context otherContext

2016-12-02 12:06:39 994

原创 android插件化 small rules

为什么要用small:1:解决65535的问题,不再依赖multidex,拆分dex变的可控2:small提供了一套插件间的解藕和通信方案,使得独立开发各个模块变得更加容易3:解藕后,各个业务模块可以独立更新4:低入侵性,即使后来改用其他的插件化方案也不需要更改代码结构--切换方案弹性更大 1: bundle.json 用来配置需要被加载的插件{ "u...

2016-11-11 11:02:13 1511 1

原创 深入理解android UI Thread

理解android UI Thread什么叫做UI Thread我通常的理解是 1. 执行ui绘制的地方,onMeasure onLayout onDraw, 2. android组件activity,service,broadcastreceiver的生命周期都是在ui thread中执行的。如果在ui thread中执行耗时过长的任务,会导致anr但是为什么会这样,并没有深入理解UI

2016-07-05 10:42:23 2812

原创 Andorid Touch 事件情景解析

1:  如果所有的子view都没有消费down事件,事件如何传递    测试代码如下public class ActivityTouchTestActivity extends AppCompatActivity { private static final String Tag = ActivityTouchTestActivity.class.getSimpleName(

2016-06-14 15:48:58 449

原创 android中的token

token顾命思意,象征符号,到底是什么的象征呢?我们在看andorid源码的时候,经常会碰到程序与系统service之间的通信,我们也知道进程间通信会用binder机制!而这个token就是一个IBinder类型代表远程service的stub对象!以下分析以6.0代码为准!1: activity中的mToken  activity启动流程中mTo

2016-05-15 22:30:51 4541

原创 nodejs eventEmitter源码解读

1:添加回调emitter.on(event, listener)        alias for emitter.addListener(..emitter.addListener(event, listener)    {...if (!this._events[type]) // Optimize the ca

2015-12-23 19:59:35 1480

转载 ubuntu 拷贝文件中断后无法识别硬盘分区

今天我用移动硬盘在Ubuntu 12.04拷贝数据,可能是系统响应过慢,拷贝到最后时未完成,就将硬盘移除。下次再插入硬盘硬盘时提示:“Error mounting: mount exited with exit code 13: $MFTMirr does not match $MFT (record 0). Failed to mount '/dev/sdb1': Input/o

2014-12-23 16:19:12 4091

原创 ViewHolder的经典用法

public class ViewHolder {// I added a generic return type to reduce the casting noise in client code@SuppressWarnings("unchecked")public static T get(View view, int id) {SparseArray viewHolde

2014-11-07 00:02:06 2873

原创 win7 安装ubuntu后 win7重新分区,引导损坏修复

如题:在win7 下用diskgenius重新分出几个扩展分区,

2014-10-13 18:09:05 1687

原创 用easybcd在win7安装ubuntu 14.04双系统

title Install Ubunturoot (hd0,0)kernel (hd0,0)/vmlinuz boot=casper iso-scan/filename=/ubuntu-14.04-desktop-i386.iso ro quiet splash locale=zh_CN.UTF-8initrd (hd0,0)/initrd.lzfind /ne

2014-09-22 18:04:08 5332

转载 为什么基类的析构函数是虚函数?

转自:http://www.cnblogs.com/zhice163/archive/2012/07/10/2584835.html注:本文章内容大部分来自网站整理。1.为什么基类的析构函数是虚函数?  在实现多态时,当用基类操作派生类,在析构时防止只析构基类而不析构派生类的状况发生。  下面转自网络:源地址 http://blog.sina.com.cn/s/bl

2014-06-08 17:17:36 727 1

原创 BlockingQueue 接口浅析

public interface BlockingQueue extends Queue {    /**     * Inserts the specified element into this queue if it is possible to do     * so immediately without violating capacity restrictions, re

2014-06-06 14:08:42 1225

原创 Timer 源码解读 (2) TaskQueue 最小堆实现的优先队列

Timer中的定义:

2014-04-06 11:03:07 3082

原创 java 中的设计模式--单例模式

public class SingleInstanceExample

2014-04-06 09:36:08 682

smaps解析-maps文件

smaps解析-maps文件

2023-08-23

Android开发视频教学源码源码(第二季)mars

源码下载.

2012-04-19

android LaunchMode测试实例

android LaunchMode测试实例 代码

2012-04-10

vc++面向对象与可视化编程基础源代码 黄维通(第二版)

vc++面向对象与可视化编程基础源代码 黄维通(第二版)

2010-07-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除