自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(46)
  • 资源 (4)
  • 问答 (1)
  • 收藏
  • 关注

原创 Android的死机、重启问题分析方法

Android的死机、重启问题分析方法1...死机现象... 51.1        死机定义... 51.2        死机表现... 51. 系统简图...52. 可能死机的原因...62...死机分析数据... 7Backtrace.73...几种典型的异常情况... 153.1        Deadlock. 1

2016-01-27 10:26:00 21844 3

原创 类加载过程

文章目录JVM生命周期结束的方式类的加载,链接和初始化类的加载1.类加载器2.类加载方式3.加载结果4.加载时机注意:这里和初始化时类的主动调用不一样,类的加载就算不是初次主动调用也会加载。类的连接1. 验证2. 准备注意:之所以说是静态成员变量而不是实例变量,是因为我们在加载类的时候并还没有实例,自然就没有实例对象3. 解析3.类的初始化注意:所有类或者接口只有在类被首次主动调用的时候才进行初始...

2019-09-09 16:41:47 242

原创 ClassLoader类加载器

文章目录路径JAVA_HOMEPATHCLASSPATHClassLoader双亲委托传递性加载方式源码分析自定义classloader自定义ClassLoader测试代码ThreadContextClassLoader 线程上下文加载器Android中的ClassLoaderBootClassLoaderBaseDexClassLoaderPathClassLoaderDexClassLoade...

2019-09-09 16:38:53 421

原创 泛型与通配符

文章目录泛型泛型方法泛型类通过反射获取泛型类对象通配符上下限泛型泛型提供了编译时类型安全检测机制,程序员可以在编译过程中发现非法的类型,泛型的本质是参数化类型,即数据类型作为一个参数泛型方法单参数泛型方法示例如下:public static <E> void say(E arg){ System.out.println(arg);}//泛型方法有<E&gt...

2019-08-16 10:29:14 173

原创 代理模式

代理模式是一种设计模式,简单说即是在不改变源码的情况下,实现对目标对象的功能扩展情景如下:你想要跟小美约会看电影吃饭,要先经过他家人审查同意,小美才能出来看电影,看完电影小美的家人会问她中不中意你1.首先定义一个女性接口(服务类),方法是看电影和吃饭public interface Date { void watchMovie(); void eatDinner();...

2019-08-15 09:55:13 168

原创 如何将自己的库开源分享到github上?

我们在github上经常会找到好用的第三方库,在build.gradle中添加依赖就可以了,但是如何将自己的库分享出去给别人使用呢?本文记录了如何将自己的库分享到平台上。文章目录如何将自己的库开源分享?1.创建项目2.创建module3.分享到github4.Github上发布Release版本5.Jitpack上发布可用版本6.引用库1.项目build.gradle中添加代码2.在Modul...

2019-08-05 14:46:37 648

原创 融云集成单聊与会话列表

写在前面,因为公司做的项目需要聊天功能,所以在网上找了下方案后,果断选择了融云,因为免费,有100个测试位。本来没想着写这个文章,无奈融云的文档写的相(fei)当(chang)简(la)单(ji),在系统里建工单问客服问题,回复太慢了,所以记录下来,防止大家继续踩坑。融云集成步骤1.注册去融云官方网站注册,点击官方网址,2.获取app key 和 app secert登录成功后可以...

2019-05-15 14:39:48 1556 2

原创 接口和抽象类

接口和抽象类的区别和联系抽象类abstract修饰的方法称之为抽象方法。包含抽象方法的类称为抽象类。抽象类可以包含多个抽象方法。抽象类不能够实例化,只能通过实现继承他的子类来实例化。abstract不能和final,static, private ,native同时修饰 方法。abstract不能和final,static, private 同时修饰 类。抽象类例子publi...

2018-12-27 17:00:20 151

原创 Glide 源码分析(三)

Glide源码分析(三)写在前面之前一直想看看Glide的源码实现是如何做的,现在终于有时间了,写下来Mark下。Glide的流程查看本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出M...

2018-10-08 17:51:11 204

原创 Glide 源码分析(二)

Glide源码分析(二)写在前面之前一直想看看Glide的源码实现是如何做的,现在终于有时间了,写下来Mark下。Glide的流程查看本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出M...

2018-09-27 16:18:12 154

原创 Glide 源码分析(一)

Glide源码分析写在前面之前一直想看看Glide的源码实现是如何做的,现在终于有时间了,写下来Mark下。Glide的流程查看本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Ma...

2018-09-27 11:34:45 308

原创 View 系列一之事件体系

View事件体系View的基础知识点什么是View?View是界面层控件的抽象,可以是一个具体的View,也可以是ViewGroup,本身包含很多子View。View的参数1.top = getTop(); 2.left = getLeft(); 3.right = getRight(); 4.bottom = getBottom(); 5.width = ...

2018-02-05 17:54:17 249

原创 Activity生命周期和启动模式2

生命周期和启动模式生命周期正常的生命周期从启动到销毁的完整生命周期:oncreate->onstart->onresume->onpause->onstop->ondestory oncreate与ondestory对应,onstart与onstop对应,onresume与onpause对应,对应的分析角度不同,oncreate与ondestory从界面的创建与销毁的角度看,on

2018-01-25 14:36:19 179

原创 Proguard 混淆之乱谈4 问题及debug

Proguard不混淆的坏处,Proguard用法,Proguard混淆使用模板。 接下来看看使用Proguard混淆产生的问题和如何进行debug。混淆产生的问题官方文档,点进去看,里面有详细的介绍。如何进行Debug1.查看出错日志2.通过mapping.txt查看映射关系3.在mapping.txt中找到对应的函数4.针对具体出的情况进行处理。

2018-01-15 16:56:33 328

原创 Proguard 混淆之乱谈 3 混淆模板

之前的文章谈了没有混淆的坏处Proguard 混淆之胡谈1和混淆的用法Proguard 混淆之乱谈2,没看的童鞋可以看下。基础部分混淆####基础混淆#####指定代码的压缩级别-optimizationpasses 5# 混淆时不使用大小写混合,混淆后的类名为小写# windows大小写不敏感,linux下可以不用添加-dontusemixedcaseclassna

2018-01-15 15:23:33 381

原创 Proguard 混淆之乱谈 2

之前说了产品不进行安全措施的后果,没看的童鞋可以看下。《Proguard 混淆之乱谈1》接下来欢迎Proguard闪亮登场!1.什么是Proguard?ProGuardis a Java class file shrinker, optimizer, obfuscator, and preverifier. The shrinking step detects and re...

2018-01-15 12:14:03 481

原创 ProGuard 混淆之乱谈 1

在进行APP开发的时候,基本的两项技术是需要掌握的,应用反编译和应用混淆。反编译是针对优秀apk进行反编译,查看酷炫的功能是怎么实现的,等等。混淆是为了防止隔壁老王对开发出来的APP进行反编译,注入代码后打包使用,用之进行不可告人目的的行为。我们现在模拟一下,某年某月某日,坏蛋联盟开会.会长发言:“针对正在写文章的这个小子开发的应用,我们的目标是?”会员:“搞垮它,搞垮它,搞垮...

2018-01-12 12:19:31 297

原创 仿微信游戏圈文章点赞与评论功能

在做项目的时候,PM来了,说咱们加一个文章评论点赞功能吧,你看微信balabalabala,然后就简单搞了下,效果图如下:主要如下:1.整体是一个listview。2.二级回复的listview不需要滚动,所以自定义listview,计算它的高度并全部显示。3.在展开对沙发的回复的时候使用了比较笨的办法,用数据源中的标记去判断是否展开还是不展开,有好的方法欢迎留言4.布局有...

2018-01-08 15:45:46 2466 1

原创 Activity 生命周期

使用app的时候,不会因为有来电通话或者切换到其他app而导致程序crash。 用户没有激活某个组件时不会消耗宝贵的系统资源。 离开app并且一段时间后返回,不会丢失用户的使用进度。设备发生屏幕旋转时不会crash或者丢失用户的使用进度。Resumed:该状态下,activity处在前台,用户可以与它进行交互。(通常也被理解为"running" 状态) Paused:该状态下,activ...

2018-01-08 11:30:30 156

原创 swift协议调用

1.定义协议2.获取实体3.协议实现4.调用

2017-01-04 17:55:08 755

原创 Swift UITableView 插入及自动滚动到底部

//// ViewController.swift// Proclamation//// Created by on 16/12/15.// Copyright © 2016年 . All rights reserved.//import UIKitclass ViewController: UIViewController,UITableViewDelegate,

2016-12-15 18:16:14 3296

原创 Swift 时间格式转化

利用NSDateFormatter类可以进行时间格式与时间戳之间的转化:param: stringTime 时间为string:returns: 返回时间戳为strings*/static func stringToTimeStamp(stringTime:String)->String { var dfmatter = NSDateFormatter() dfma

2016-12-05 15:54:13 2365

原创 Swift 获取时间之NSDate扩展

extension NSDate{ func Year() -> Int { let curCalendar:NSCalendar = NSCalendar.currentCalendar() let componentYear:Int = curCalendar.component(NSCalendarUnit.Year, fromDate: self)

2016-11-23 10:12:28 811

转载 swift 开发 导航栏隐藏无效解决办法

我在viewdidload 里面加了下面三句都没效果,求大神解答?123self.navigationItem.hidesBackButton = true;self.navigationItem.setHidesBackButton(true, animated: false)self

2016-10-24 18:48:25 2604

原创 Swift 学习第一天

1.在swift语言中,var 定义变量,let定义常量,let定义之后不能再被赋值2.类型 var str = " hello"  有个自动推断,根据hello的内容判断str的类型var str:String = "hello" 则手动定义str的类型为String,不用再根据内容推断str的类型3.字符窜连接var str = "hello"var s

2016-10-01 15:26:29 335

原创 HelloChart折线图属性及方法

List pointValues = new ArrayList();// 节点数据结合 Axis axisY = new Axis().setHasLines(true);// Y轴属性 Axis axisX = new Axis();// X轴属性 axisY.setName("温度");//设置Y轴显示名称 axisX.setN

2016-09-09 17:51:49 6449 2

原创 Activity生命周期

每次关于activity的状态保留和更新,在哪个阶段保存,哪个阶段刷新,看下面这个图就很清楚了。一般都是三个比较重要的阶段,create,pause和resume。生命周期图如下(网上来源)。...

2016-07-27 11:18:50 335

原创 PMS 启动流程

1.在SystemServer中启动PackageManagerService.main2.newPackageManagerService()并添加到ServiceManager中3.newinstaller(建立installer和installd的socket连接,最终在底层实现install,remove,dexopt等功能)4.通过systemConfig

2016-05-10 14:56:50 1483 1

原创 Android 关机流程 从kernel到framework

Android6.0关机流程Android系统关机有如下方式:1.定时关机、2.命令行输入reboot重启、3.长按电源键出现关机对画框等,本文以长按电源键为例来分析基于Android 6.0的高通源码。长按电源键会启动Android系统的按键消息处理机制。每个activity具有一个phonewindow对象,每个phonewindow对象具有一个DecorView对象,每个DecorV

2016-05-09 17:25:21 6357

原创 Android 如何避免(降低)后台程序被杀?

为防止某些进程被low memory意外杀掉,可以将其加入白名单,降低误伤的概率;一般,low memory killer会首先选择adj value徘徊在9~15的process去结束生,所以这个主要就是通过提高adj value的值来降低被杀概率; private final boolean updateOomAdjLocked(ProcessRecord app, int hidd

2016-04-05 19:14:53 5300

原创 Android 应用利用反射机制获取/设置系统属性值

使用adb shell 中的getprop 可以获取属性的值,但是在应用开发中因为systemproperties的hide属性,所以无法直接访问到get和set函数。通过网上的教程可以通过反射机制来获取get和set函数,具体代码如下:/* * method to setprop * */ static public void setprop(String ke

2016-03-31 16:48:12 3320

原创 Linux 分区名称和磁盘路径匹配 及 磁盘读取

Android 基于linux开发,所以linux的基本命令在android手机上是可以执行的,基于这个原理,可以使用 Linux 的dd命令进行移动端磁盘读取与保存。1.首先进入如下目录:/dev/block/platform/7824900.sdhci/by-name在该目录下ls,就可以看到分区名称和对应的磁盘,如下:rwxrwxrwx root    

2016-03-04 14:02:13 1717

原创 Adb Shell 下content使用

在 Adb shell  后可用content对数据库(uri)进行简单的query,insert,update等操作,具体如下:1.conent 帮助文档如下:usage: adb shell content [subcommand] [options]usage: adb shell content insert --uri [--user ] --bind [--bind

2016-01-20 20:01:48 11939 2

原创 Android 数据库操作

最近在做自动话测试应用开发,涉及到database的操作。简单写下 Sqlite的query操作。private static final String DATABASENAME = "/data/data/com.example.zhangjinlu.automatictest/settings.db"; private SQLiteDatabase sqLiteDatabase

2016-01-20 19:40:47 445

翻译 Android Init.rc 语法分析

本文翻译自system/core/init/readme.txtAndroid Init语句主要有四大类说明语句构成:行为(Action)、命令(Command)、服务(Service)和选择(Option)。Init语句以行为单位,由用空格隔开的字符构成。C语言的反斜杠通常用作往字符中插入空格的用途,而双引号则可以避免字符被空格符分隔成多个独立的字符,当反斜杠用在一行的末尾的

2015-04-13 15:40:52 501

原创 命令录制与回放:script and scriptreplay

如果可以,视频是能够清楚说明一个人的意图所在,在linux中,我们可以做相似的工作 --命令录制与回放命令如下:script -t 2>timing.log -a out.sessioncomands 1;comands 2;..exit如上录制结束,回放则使用如下命令:scriptreplay timing.log out.session

2015-01-23 09:42:08 834

转载 GitHub详细教程

GitHub详细教程转载自http://blog.csdn.net/tangbin330/article/details/9128765,感谢原作者。1 Git详细教程1.1 Git简介1.1.1 Git是何方神圣?1.1.2 重要的术语1.1.3 索引1.2 Git安装1.3 Git配置1.3.1 用户信息1.3.2 高亮显示1.3.3 忽

2014-12-24 10:27:15 528

原创 Linux 变量内容的删除、取代与替换---删除与取代

Shell脚本中,变量是最常用的,变量内容也是我们关注的焦点,如何修改bian

2014-08-13 18:07:59 1574

转载 Ubuntu 14.04 Mac 主题美化

为Ubuntu 14.04 安装MAC OS X 主题2014年06月03日 ⁄操作系统, 资源分享⁄ 共 5087字 ⁄ 字号 小 中 大 ⁄暂无评论 ⁄ 阅读 636 次 1: Mac wallpapersDownload Mac OS X Wallpapers2: DockyFrom last MacBuntu pack I recommended

2014-07-27 13:07:39 3612 1

原创 Linux 文本 查找命令小结之grep

在Linux中 grep是一种强大的文本搜索工具,可以将匹配的信息打印出来。grepquancheng

2014-07-12 17:13:20 784

View滑动冲突内部拦截法Demo

ScrollView嵌套listview的滑动冲突解决方案-内部拦截法

2018-02-07

View滑动冲突外部解决法Demo

嵌套View滑动冲突外部解决法Demo,ScrollView嵌套多个ListView的冲突解决Demo

2018-02-07

Android 仿微信游戏圈点赞和评论

仿微信游戏圈点赞和评论功能的实现,demo已跑通,欢迎大家使用。

2018-01-08

夜未眠 ,程序员 的心声

夜未眠 ,程序员 的心声 ,说说程序员 的一些感想

2009-11-27

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

TA关注的人

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