自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

吴晓龙的博客

爱吃哈密瓜的程序员

  • 博客(24)
  • 资源 (3)
  • 收藏
  • 关注

原创 仿bugtags实现App线上Crash监控及问题复现

仿bugtags实现App线上Crash监控及问题复现实现线上crash监控,包含了手机堆栈信息和设备信息,及时上传,后台修复并启用推送进行热修复流程,重要的是要手机用户的使用步骤及现场截屏,以便更快的复现问题。大致的流程如下: 欢迎关注我的公众号:我们预览下结果:这是携带设备信息的堆栈信息文件这是用户的使用步骤文件这是最终上传到服务端...

2018-03-16 21:24:39 978

原创 基于8.0源码解析:bindService 启动过程

基于8.0源码解析:bindService 启动过程欢迎关注我的公众号: 调用bindService 后会到ContextWrapper中:@Override public boolean bindService(Intent service, ServiceConnection conn, int flags) { ret

2018-01-25 14:13:05 491

原创 基于8.0源码解析:startService 启动过程

基于8.0源码解析:startService 启动过程调用startService 后会到ContextWrapper中:@Override public ComponentName startService(Intent service) { return mBase.startService(service); }这个mBase就是Context

2018-01-24 16:01:03 2225

原创 8.0源码解析:Activity启动流程

Activity启动流程欢迎关注我的公众号: 调用startActivity,会执行Activity中的startActivity @Override public void startActivity(Intent intent) { this.startActivity(intent, null); }然后调用它的重载方法@Over

2018-01-23 19:25:37 981

原创 RemoteViews一 仿qq音乐自定义通知栏实现快捷切换歌曲

RemoteViews一 仿qq音乐自定义通知栏实现快捷切换歌曲定义:RemoteViews表示一种view结构,它可以在其他进程中显示,由于它在其它进程中,为了能够更新它的界面,RemoteViews提供了一组基础的操作用于更新它的界面。本文大概需要5分钟,从以下三方面讲解。文章底部有总结,急性子可以直接看总结,快速掌握知识点。一、成果展示二、代码讲解三、总结一、

2018-01-19 17:29:25 2381 1

原创 你能用到的android和java资料全在这里了

面试bat用的数据结构视频,各种编程文档资料,设计模式,各种语言的资料,安卓资料,安卓源码分析,面试技巧,数据结构与算法等。关注公众号回复相应即可。

2018-01-11 21:45:35 265

原创 setCompoundDrawables不显示图片

BUG #28475 海外版登陆界面缺少Hi图标中代码不起作用的问题   dynamicAddView会调用BaseActivity的dynamicAddSkinEnableView,然后调用AttrFactory.get,通过if else判断 mSkinAttr = new DrawableLeftAttr();    看代码知道最终调用setC

2017-08-03 20:26:39 799

原创 jvm运行时数据区域 --- 程序计数器

程序计数器程序计数器是一块比较小的内存空间。它可以看做是当前线程所执行的子界面的行号指示器。在虚拟机的概念模型里(仅是概念模型,各种虚拟机可能会通过一些更高效的方式去实现),字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的指令,分之,循环,跳转,异常处理,线程恢复等基础功能都需要依赖这个计数器完成。由于java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来实

2017-06-10 20:33:26 278

原创 View的事件分发(附流程图)

View的事件分发:1、  触摸事件的传递流程是从dispatchTouchEvent开始的,如果不进行人为干预(super.dispatchTouchEvent()),则事件会按照嵌套层次从外层依次向内层传递,到达最内层View时,就由它的TouchEvent方法处理。该方法如果能消费此事件,则返回true,如果处理不了,则返回false,这时事件会重新向外层传递,并由外层view的touche

2017-06-07 14:19:12 741

原创 一心想去今日头条,看看现在的招聘,警醒自己,每天不能太放纵,要想提高就得不断学习,拼命努力

2017-06-03 21:36:32 576

原创 AsyncTask源码几句话解释

18行:设置当前AsyncTask的状态为RUNNING,上面的switch也可以看出,每个异步任务在完成前只能执行一次。20行:执行了onPreExecute(),当前依然在UI线程,所以我们可以在其中做一些准备工作。22行:将我们传入的参数赋值给了mWorker.mParams ,mWorker为一个Callable的子类,且在内部的call()方法中,调用了doInBackgroun

2017-05-22 16:37:57 247

原创 观察者模式

package com.lantier.xxb_student.drawlayerlayout.subscription;import java.util.Observable;/** * Created by xxb_student on 2017/5/21. *///Android weekly这个网站是被观察者,它有更新所有的观察者都会收到相应的通知public class

2017-05-21 11:07:05 433

原创 单例模式

package com.lantier.xxb_student.drawlayerlayout.singonton;import android.util.Log;import java.util.HashMap;import static android.content.ContentValues.TAG;/** * Created by xxb_student on 2017

2017-05-20 16:14:56 357

原创 工厂方法模式

package com.lantier.xxb_student.drawlayerlayout.factory;/** * Created by xxb_student on 2017/5/20. */public abstract class Factory { public abstract WindowStyle createWindowStyle();}packa

2017-05-20 15:10:34 198

原创 设计模式-简单工厂模式

简单工厂模式又名静态方法工厂模式,由一个工厂对象决定创建哪一个产品的实例 使用场景:客户端需要创建对象,隐藏对象的创建过程,并且目标对象类型数量不是很多的时候,可以考虑使用简单工厂模式 Product 产品的通用接口,用来定义产品的行为 ConcreteProduct 具体的产品,实现了Product接口Creater 工厂类,通过factory来创建对象优点:分工明确,各司其职客户端不再创建对象

2017-05-20 12:09:15 204

原创 性能优化一-app启动速度及splash设计

App启动方式:1冷启动:启动应用时后台没有该应用的进程,系统会重新创建一个该应用的进程分配与该应用,这种启动方式叫做冷启动 特点:因为系统会重新创建一个进程分配给应用,所以会创建并初始化application类,再创建和初始化mainactivity类(测量,布局,绘制等),最后再显示2:热启动:按home键,后退键等方式退出应用后,其实后台有该应用的进程,这种启动方式叫做热启动。

2017-05-11 17:07:37 471

原创 Handker相关知识

handler内部如何获取Looper的?使用ThreadLocal,ThreadLocal可以在不同线程间互不干扰的存储并提供数据,通过ThreadLocal可以轻松的获取每个线程的Looper。Looper的产生?线程默认是没有looper的,如果需要使用Handler就必须为每个线程创建Looper。主线程ActivityThread被创建时就会初始化Looper,这就是主线程默

2017-04-22 16:53:24 1424

原创 自定义view之三画板

项目地址:https://github.com/lantier743865/WuZiQi思路:1、继承surfaceview,实现callback,runnable接口2、定义成员变量surfacehodler,canvas,mIsDrawing(是否在子线程)3、重写ontouch时间,记录path4、子线程run里绘制,必要的做优化,判断时间间隔packag

2017-03-28 22:12:38 429

原创 自定义view之二时钟表盘

项目地址:https://github.com/lantier743865/WuZiQi思路:1、画外圆2、画刻度3、画指针代码如下:不懂得加我微信或qq:635912159package com.lantier.xxb_student.clockdial;import android.content.Context;import android.grap

2017-03-28 22:07:42 397

原创 自定义View之一五子棋

项目下载地址:https://github.com/lantier743865/WuZiQi周末有空写了个五子棋的东西,因为项目也有类似的如同批改作业一样的东西,所以打算出一个系列的自定义View,一来给大家一个思路,另来锻炼自己的能力,毕竟代码越写越熟练。废话不多说,开干吧!整体思路:1、重写onMeasure,使得整个棋盘为正方形,另外为了防止在某些特定布局变形

2017-03-25 21:01:33 732

原创 viewPager的getChildAt为null的解决办法

layoutContent = (ImageLayout) viewPagerImgs.getChildAt(this.currentItem).findViewById(R.id.layoutContent);if (layoutContent != null ){ layoutContent.setEditotStatus();}但总是说viewPagerImgs.getChild

2017-03-23 12:00:00 2439

原创 开闭原则

当软件需要变化时,应该尽量通过扩展的方式实现变化,而不是通过修改已有代码来实现。

2017-03-22 22:19:26 229

原创 单一职责原则

两个完全不一样的功能就不应该放在一个类中。一个类中应该是一组相关性很高的函数、数据的封装。工程师可以不断的审视自己的代码,根据具体的业务,功能对类进行相应的拆分,这是程序员优化代码的迈出的第一步。

2017-03-22 21:10:12 350

原创 Mina长连接框架实现Android客户端与服务器端通信

一、概述        Apache Mina Server 是一个网络通信应用框架,也就是说,它主要是对基于TCP/IP、UDP/IP协议栈的通信框架(当然,也可以提供Java 对象的序列化服务、虚拟机管道通信服务等),Mina 可以帮助我们快速开发高性能、高扩展性的网络通信应用,Mina 提供了事件驱动、异步(Mina 的异步IO 默认使用的是Java NIO 作为底层支持)操作的

2016-12-18 20:49:54 627

算法代码(常见各种排序)

算法代码(常见各种排序)

2018-09-11

必看android500道高薪面试题集

就是一个高薪面试的题目集合就是一个高薪面试的题目集合就是一个高薪面试的题目集合就是一个高薪面试的题目集合就是一个高薪面试的题目集合就是一个高薪面试的题目集合就是一个高薪面试的题目集合就是一个高薪面试的题目集合就是一个高薪面试的题目集合就是一个高薪面试的题目集合就是一个高薪面试的题目集合就是一个高薪面试的题目集合就是一个高薪面试的题目集合就是一个高薪面试的题目集合

2018-09-11

Androd还有什么可以做的

讲android生存现状,

2018-09-11

空空如也

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

TA关注的人

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