自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

转载 单例模式的深入理解

转载:http://www.cnblogs.com/snowbook/p/5149124.html

2018-10-25 15:16:43 236

原创 抽象类&接口

抽象类abstract修饰的类就是抽象类,abstract修饰的方法就是抽象方法,抽象方法是没有方法体的;抽象类中可以包含抽象方法,抽象类不能实例化,必须由子类继承,并实现抽象方法,才能使用;抽象类与普通类的不同之处:一、抽象类有抽象方法,普通类没有;二、抽象类的构造器是供子类调用的,不能用于创建对象,普通类可以通过构造器实例化;接口public interface OnLoadDate...

2018-10-24 16:18:24 222

原创 ThreadLocal原理

一、ThreadLocal概念ThreadLocal 是线程的局部变量, 是每一个线程所单独持有的,其他线程不能对其进行访问。当使用ThreadLocal维护变量的时候 为每一个使用该变量的线程提供一个独立的变量副本,即每个线程内部都会有一个该变量,这样同时多个线程访问该变量并不会彼此相互影响,因此他们使用的都是自己从内存中拷贝过来的变量的副本, 这样就不存在线程安全问题,也不会影响程序的执行性能...

2018-06-27 15:53:41 22940 1

原创 线程以及线程池的几种方式和优缺点

问:线程池常用的几种类型?答:Java通过Executors提供四种线程池,分别为:1 newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。Executors.newCachedThreadPool(); 缺点:大家一般不用是因为newCachedThreadPool 可以无线的新建线程,容易造成堆外内存溢出,因为它的...

2018-06-22 21:23:37 15139

原创 动态权限适配方案

权限管理系统的变化在Android6.0(M)之前,在用户安装应用的时候会产生一个权限列表,只有用户允许这些权限后,应用才可以正常的安装,这就会产生一个问题,这些权限对用户是不具有感知性的,也就是说用户都不知道你要这些权限干什么,我明明装的是一个阅读类型的应用,你却要我拨打电话的权限,你想干嘛呢?当然绝大部分的开发者是善意的,但也避免不了一些特殊人群利用这些“漏洞”做一些不好的事情。而在Andro...

2018-06-22 19:19:41 630

原创 内存泄露产生的原因和避免方式

一、内存泄露如何产生?Java内存泄漏的根本原因是长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄漏,尽管短生命周期对象已经不再需要,但是因为长生命周期持有它的引用而导致不能被回收,这就是Java中内存泄漏的发生场景。具体主要有如下几大类:1、静态集合类引起内存泄漏:像HashMap、Vector等的使用最容易出现内存泄露,这些静态变量的生命周期和应用程序一致,他们所引用的所有的对象Ob...

2018-06-20 20:34:23 8010

原创 OOM 内存溢出的原因和处理方法

1 OOM的可能原因?1.数据库的cursor没有关闭。2.构造adapter没有使用缓存contentview。3.调用registerReceiver()后未调用unregisterReceiver().4.未关闭InputStream/OutputStream。5.Bitmap使用后未调用recycle()。6.Context泄漏。7.static关键字等。8.非静态内部类可能导致的内存泄露...

2018-06-20 16:23:52 30499

原创 Android编译环境报错记录

一、报错出现了build/core/host_shared_library_internal.mk:44: recipe for target 'out/host/linux-x86/obj/lib/libc++.so' failed解决方案:  1.art/build/Android.common_build.mk中把true改为false# Host.ART_HOST_CLANG := fa...

2018-06-12 11:56:14 1070

原创 java collection.sort() 根据对象的某个属性对list进行排序

1基本类型的list排序/** * 对List对象按照某个成员变量进行排序 * @param list List对象 * @param sortField 排序的属性名称 * @param sortMode 排序方式:ASC,DESC 任选其一 */ public static <T> void sortList(List<T> ...

2018-06-12 11:52:50 9924

原创 基本排序算法

@Test public void addition_isCorrect() { assertEquals(4, 2 + 2); int[] b = {49, 38, 65, 97, 76, 23, 17};// InsetSort(b);// ShellInset(b);// SelectSort(b...

2018-06-11 20:03:16 167

原创 android 工程编译错误

在工程的编译过程中会出现一些错误一、报错出现了build/core/host_shared_library_internal.mk:44: recipe for target 'out/host/linux-x86/obj/lib/libc++.so' failed解决方案:  1.art/build/Android.common_build.mk中把true改为false# Host.ART_...

2018-03-13 16:26:21 421

原创 AIDL的原理以及demo

第一部分 AIDL的概念以及使用步骤Android系统中的进程之间不能共享内存,因此,需要提供一些机制在不同进程之间进行数据通信。为了使其他的应用程序也可以访问本应用程序提供的服务,Android系统采用了远程过程调用(Remote Procedure Call,RPC)方式来实现。与很多其他的基于RPC的解决方案一样,Android使用一种接口定义语言(Interface Definition ...

2018-03-01 15:05:54 581

原创 View的滑动效果

1滑动原理滑动一个view的原理就是通过不断的改变view的坐标来实现这个效果,基本思路:要实现view的滑动,必须监听用户的触摸事件,并根据事件传入的坐标,动态且不断的改变view的坐标,从而实现view跟随用户触摸的滑动而滑动. 1.1 坐标系 在android中有两种坐标系:android坐标系(屏幕坐标系)和view坐标系(视图坐标系).android坐标系的定义是 移动设备一般将屏幕

2017-12-27 15:48:06 237

原创 SurfaceView

View 是通过刷新来重绘视图的,刷新的间隔时间是16ms,如果执行的操作太多,不能够在16ms内完成所有的操作,就会出现不断阻塞主线程,导致卡顿现象. 而SurfaceView是android系统来解决上述问题的,是View的孪生兄弟,其主要区别在于以下几点View主要适用于主动更新,而SurfaceView主要使用被动更新,比如频繁的刷新View是在主线程中对画面进行刷新的,而Surfac

2017-12-21 20:38:20 285

原创 Android绘图机制二

ColorMatrixAndroid对图片处理时,最常用的数据结构是Bitmap,整个图是由包含像素的点阵和对应透明度,红,绿,蓝的颜色值组成的,在Android中,系统使用ColorMatrix类来处理图像的色彩效果,ColorMatrix其实就是一个4x5颜色矩阵. imageView = (ImageView)findViewById(R.id.icon_group);

2017-12-20 18:47:29 289

原创 Android绘图机制与处理技巧

1 单位转换由于各种屏幕密度不同,导致同样像素大小的长度,在不同密度的屏幕上显示的长度不同,如下是各个密度值中的换算公式, 在mdpi 中 1dp = 1px, 在hdpi 中 1dp = 1.5px, 在xhdpi 中 1dp = 2px, 在xxhdpi 中 1dp = 3px, 其直接的换算公式是: ldpi:mdpi:hdpi:xhdpi:xxhpi = 3:4:6:8:12

2017-12-19 20:27:22 234

原创 ViewGroup 自定义演示

第一部分:利用系统属性自定义ViewGroup1、ViewGroup的职责是啥? ViewGroup相当于一个放置View的容器,ViewGroup的职能为:给childView计算出建议的宽和高和测量模式 ;决定childView的位置;为什么只是建议的宽和高,而不是直接确定呢,因为childView宽和高可以设置为wrap_content,这样只有childView才能计算出自己的宽和高。

2017-12-07 17:07:34 163

原创 自定义控件的演示

通常情况下,有三种情况实现自定义控件:对现有控件进行拓展 该方法主要是在原生控件的基础上进行拓展,增加新的功能,修改显示UI等,一般是通过onDraw方法进行拓展.通过组合来实现新的控件 该方法主要是通过继承合适的ViewGroup,比如,LinearLayout,RelativeLayout等等,再添加一些点击事件,监听事件等指定功能,从而合成复合控件,另外还可以指定一些它自己的属性,让其

2017-11-27 18:25:26 224

原创 React Native按钮的实现

在React Native中没有专门的按钮组件,所以在React Native中是借助Touchablexxx组件包裹我们的视图来响应用户的点击事件,另外Touchable组件,都是在根节点只支持一个组件,如果你需要多个组件同时相应单击事件,可以用一个View将它们包裹着. #.TouchableWithoutFeedback: 该组件响应点击事件,不显示任何视觉反馈。常用的属性有:

2017-11-22 15:38:06 853

原创 React Native的按钮详解

在React Native中没有专门的按钮组件,所以在React Native中是借助Touchablexxx组件包裹我们的视图来响应用户的点击事件,另外Touchable组件,都是在根节点只支持一个组件,如果你需要多个组件同时相应单击事件,可以用一个View将它们包裹着. #.TouchableWithoutFeedback: 该组件响应点击事件,不显示任何视觉反馈。常用的属性有:

2017-11-16 19:10:05 1148

原创 React Native 布局详解

主轴和侧轴(横轴和竖轴)首先来认识一下基本概念,主轴与侧轴主轴指的是:水平方向的轴线,可以理解成横轴;侧轴垂直于主轴,可以理解为竖轴 另外:在React Native中尺寸是没有单位的,它代表了设备独立像素。<View style={ {width:100,height:100,margin:40,backgroundColor:'gray'}}> <Text style={ {f

2017-11-15 16:05:42 358

原创 React Native关键字详解

state通过getInitialState() 方法初始化state,在组件的生命周期中仅执行一次,用于设置组件的初始化 state 。 更新 state 通过this.setState()方法来更新state,调用该方法后,React会重新渲染相关的UI。 上面代码是一个 FavoriteButton 组件,它的 getInitialState 方法用于定义初始状态,也就是一个对象,这个对

2017-11-14 18:16:31 387

原创 React Native组件的生命周期及属性props

创建组件的三种方式第一种:通过ES6的方式创建/** * 方式一 :ES6 */export default class HelloComponent extends Component { render (){ return <Text style={{fontSize:20,backgroundColor:'red'}}>Hello</Text> }}第二种:通过ES5

2017-11-10 17:05:16 933

原创 React Native的环境搭配

前提系统:Ubuntu14.04LTS 1 Java:JDK8 Android Studio requires the Java Development Kit [JDK] 1.8 or higher. 需要1.8以上的jdk 2 Android Studio:2.0+ 需要2.0以上的AS Android Studio will provide you the Android SDK a

2017-11-08 17:20:42 679

原创 AsyncTask的基本使用及工作原理

public abstract class AsyncTask< Params, Progress, Result > 对于android中的处理异步线程的机制, 能够更加简单的处理异步任务. 如下图是该抽象类的大纲 其中,doInBackground(Params… params)是一个抽象方法,我们继承AsyncTask时必须覆写此方法;onPreExecute()、onProgressUpd

2017-10-25 20:33:05 377

原创 Android Apk 反编译

如图1是某一个应用程序的apk文件解压缩内容 点击查看可知,xml文件基本打不开,没有源码src文件夹,只能在res文件夹中查看非xml的图片资源,但是经过加密处理过的图片,也是看不到的. apk文件的正常的反编译过程,需要三个重要的工具. 工具一 apktool 执行命令:apktool d com.bibu.popstar_4.apk (解压输出过程如下) 18:06:48 up

2017-07-18 18:14:03 364

原创 Android事件分发机制源码完全解析

第一部分  android按键事件处理流程 keyevent 规则如下: 1.View的各种KeyEvent.Callback接口早于Activity的对应接口被调用; 2.整个处理环节中只要有一处表明处理掉了,则处理结束,不在往下传递; 3.各种Callback接口的处理优先级低于监听器,也就是说各种onXXXListener的方法优先被调用。 举例:当控件没有获取焦点时,只有activ

2017-07-17 19:24:11 401

原创 获取系统信息之Packages.xml文件

Android开机启动的流程中,在系统初始化的时候,PackageManager底层实现类PackageManagerService会去扫描系统中一些特定的目录,并解析其中的APK文件,同时,Android系统把它获取的应用信息,保存在XML文件中,所以系统应用的信息都可以通过解析这个XML文件去查看,当系统中的Apk安装,删除,升级时,这个文件都会被更新,它位于/data/system/目录下,命

2017-07-13 20:20:12 1916

原创 Android Apk 应用信息获取之 PackageManager

Manifest配置图: 图中,可以看到系统对每个节点信息进行了封装, 提供了各种类来存储对应节点的信息,通过PackageManager就可以获取对应的节点信息。PackageInfo 包含了所有的acitity service信息 常用的字段 public String packageName —— 包名

2017-07-13 19:18:27 1863

原创 android系统信息

android系统源代码目录 -Makefile -bionic bionic C库 -bootable 启动引导相关代码 -build 存放系统编译规则等基础开发包配置 -cts Google兼容性测试标准 -dalvik dalvik虚拟机 -development 应用程序开发相关 -external android使用的一些开源模块 -frameworks Fr

2017-07-11 20:16:47 397

原创 Android任务栈简介

1 各个Activity之间是通过Intent连接的,而Android系统,通过栈结构来保存整个App的Activity,栈低的元素是整个任务栈的发起者. 2 当一个App启动的时候,当前环境中没有该App的任务栈,则会创建一个新的任务栈,之后,这个App所启动的所有Activity都将在这个任务栈中被管理,该栈叫Task.即表示若干个Activity的集合,他们的组合形成一个Task,它是一个先

2017-07-06 18:30:44 1395

原创 Activity的生命周期以及四种形态

1 Activity 是与用户交互的第一接口, 通过setContentView(View)方法来给该Activity指定一个显示界面, 并以此为基础提供给用户交互接口. 另外 系统是采用Activity栈来管理Activity的. 2 四种形态Runing/Active 此时Activity 处在Activity栈的最顶层, 处于屏幕最前方,可与用户进行交互 .此时处于运行状态;Paus

2017-07-05 18:45:01 1638

原创 事件拦截机制简单分析

事件拦截机制简单分析 1 ViewGroup来说,有三个重要的事件拦截和处理的方法: dispatchTouchEvent (MotionEvent e) , onInterceptTouchEvent(MotionEvent e), onTouchEvent(MotionEvent e) 2 对于View来说,有两个重要的事件拦截和处理方法: dispatchTouchEvent(Motion

2017-07-05 14:15:42 1014 1

空空如也

空空如也

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

TA关注的人

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