自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(180)
  • 资源 (12)
  • 问答 (3)
  • 收藏
  • 关注

原创 zygote进程启动

1.init.cpp —> main()main()方法主要完成一下 6 件事:klog_init() 将log写入到/dev/kmsg中process_kernel_cmdline()解析内核启动参数signal_handler_init()函数设置了信号处理函数property_load_boot_defaults()函数导入了默认环境变量property_init()和s...

2019-01-25 11:15:06 425

原创 binderService()方法的调用过程

bindService()在绑定Service主要经历一下几个过程:Activity向ActivityManagerService发送一个绑定xxxService组件的进程间的请求。ActivityManagerService在接到请求后检查运行XXXService组件的进程是否处于运行状态,如果没有运行就启动这个进程。在运行XXXService的进程启动后,ActivityManage...

2019-01-16 17:14:09 2521

原创 Android Binder机制的详解

1.Binder机制简介Android Binder是源于Palm的OpenBinder,它为android设备跨进程访问而设计。Binder机制从表现上看可以实现java 和native层的对象实例可以从一个进程访问到另一个进程,从而透明的实现跨进程的调用。调用者感觉不到自己的请求是在另一个进程中完成并返回结果的。在android系统中使用Binder机制最多的是系统服务,这些服务一般运行在特...

2019-01-08 21:52:21 17971

原创 通过AIDL和IInterface了解Android的Binder通信机制

关于Binder的IPC的通信方式前前后后好了不少次都没有整理处来思路,所以总是记忆不深刻。正好这次在阅读Android framework中的源码时system_server进程启动了Android系统中重要的服务AMS、WMS、PMS…等都是基于IInterface接口直接实现的,然后在此激发了我再次了解Binder机制的欲望。也只有透彻了解Binder机制才能更容易的分析系统的服务的调用过程...

2018-12-29 00:35:38 7622

原创 EventBus3.0源码浅读

EventBus是一个应用于Android和Java的松耦合的“主题/订阅”模式的开源库。它能够依赖几行简单的代码解耦总线通信,删除依赖、提高开发效率。EventBus的基本组成EventBus有三个主要部分: 1. Event事件: 任意类型的类对象都可以; 2. Subscriber 事件订阅者: 事件订阅者具体处理它锁订阅的事件类型的事件的处理。在老版本的EventBus中事件订阅的处理

2018-05-09 18:45:16 419

原创 Handler、Looper、ThreadLocal 、Values

1.Looper创建过程Looper主要方法如下: - prepareMainLooper() - prepare() - loop() - Looper(boolean quitAllowed)  Looper的创建过程我们就从应用程序的主线程(UI线程)的Looper的创建过程说起。UI进程的创建是在ActivityThread的main()的主方法开始的,代码如下: public

2017-11-17 14:35:21 396

转载 Http Cookies 详解

HTTP cookies,通常又称作"cookies",已经存在了很长时间,但是仍旧没有被予以充分的理解。首要的问题是存在了诸多误区,认为cookies是后门程序或病毒,或压根不知道它是如何工作的。第二个问题是对于cookies缺少一个一致性的接口。尽管存在着这些问题,cookies仍旧在web开发中起着如此重要的作用,以至于如果cookie在没有可替代品出现的情况下消失,我们许多喜欢的Web应用

2017-05-02 21:59:53 486

原创 高效加载图片

学习在保持用户界面(UI)组件响应和避免超过应用内存限制的情况下,使用普通技术处理图片的加载的方法。如果你不注意,图片会快速的消息应用程序与分配的有效内存致使程序因为“java.lang.OutofMemoryError: bitmap size excends VM budget”异常而崩溃。这里有几个在应用程序中加载图片时要注意的原因:移动设备通常有系统资源限制。android设备上简单应用一

2016-09-03 16:42:16 697

原创 Zygote进程启动详解

我们都知道Android系统是架构在linux内核之上移动操作系统。在unix系统中所有的进程都是在init进程的子进程,有init进程负责fork创建。所以zygote进程肯定也是init进程fork出来的子进程。关于init进程的启动暂时不谈。 那么Zygote进程作为android 应用程序进程和系统服务进程SystemServer的主进程,那我主要做了哪些工作呢?我们通过源码分析一下。

2016-08-09 01:12:52 1570

原创 java并发机制之volatile详解

java并发机制之volatile详解在java的多线程编程中synchronized和volatile使用十分广泛。volatile是一个轻量级的synchronized。它在多核并发编程中可以保证共享变量的“可见性“,在一个线程修改了被volatile修饰的共享变量时可以保证另外一个线程可以读到这个修改后的的值,避免多个变量独到的值内容不同。合适使用volatile 修饰符可以有效避免共享变量多

2016-07-07 00:25:18 522

转载 Java中的HashMap和HashTable到底哪不同?

HashMap和HashTable有什么不同?在面试和被面试的过程中,我问过也被问过这个问题,也见过了不少回答,今天决定写一写自己心目中的理想答案。代码版本JDK每一版本都在改进。本文讨论的HashMap和HashTable基于JDK 1.7.0_67。源码见这里1. 时间HashTable产生于JDK 1.1,而HashMap产生于JDK 1.2。从时间的维度上来

2016-07-06 16:40:27 465

转载 图解 Android 事件分发机制

本文章转载于:http://www.jianshu.com/p/e99b5e8bd67b本人一直想理清楚事件分发的机制,读到这片文章,看作者配置多张图片流程介绍详细可见作者之用心。但文章确实优点长在Android开发中,事件分发机制是一块Android比较重要的知识体系,了解并熟悉整套的分发机制有助于更好的分析各种点击滑动失效问题,更好去扩展控件的事件功能和开发自定义控件,同时事件分发机制

2016-06-25 11:57:49 444

原创 Android 6.0 运行时权限检测

Android 6.0 运行时权限检测Android 6.0之前的系统用户在安装apk文件时会根据app声明的权限声称权限列表,用户只有在同意了申请的权限后才可以继续安装应用。这样就存在了很大的安全隐患。因此在android 6.0后的系统中对权限进行了分级。一种是normal permission,一种是 dangerous permission级别权限。normal permission权限:

2016-06-15 01:35:09 6344

转载 安卓约束控件(ConstraintLayout)扁平化布局入门

本文章系转载自:http://www.jianshu.com/p/792d2682c538?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io序在Google IO大会中不仅仅带来了Android Studio 2.2预览版,同时带给我们一个依赖约束的库。简单来说,她是相对布局的升级版本,但是区别与相对布局更加

2016-05-21 17:30:21 2559

原创 android Gradle 教程

发现一个官方翻译后的gradle教程:http://avatarqing.github.io/Gradle-Plugin-User-Guide-Chinese-Verision/index.html

2016-05-08 12:52:57 388

原创 Java动态代理

之前在看java class的放射机制。通过反射机制可以实现java类的动态代理。我们都熟知代理模式,jdk中有invocationHandler和proxy相关接口(类)为我们体用一套实现java动态代理的框架。java的动态代理在平时开发中可能使用不多但是在框架设计上应用广泛。例如Spring框架就是建立在java动态代理机制之上的,充分的应用java动态代理将使程序变得更加灵活。下面我们

2016-04-16 11:08:55 462

原创 JAVA反射机制(及反射调用的性能简测)

1.java的反射机制:我都知道大多数脚本语言都是动态语言,例如Perl、Python、ruby之类的。他们都有用一共共同的特点数据类型可在程序运行时动态的改变其类型、结构和属性。基本都是解释型语言,而JAVA在程序运行前需要通过编译器先进行源码编译(编译成字节码),然后有jvm加载运行。同样java也引入动态加载的相关机制----反射机制。从而实现动态加载类对象,提高程序设计的灵活性。反

2016-04-15 22:38:03 1806

转载 FragmentPagerAdapter和FragmentStatePagerAdapter的区别(重新温习)

在一个 Android 应用中,我使用 FragmentPagerAdapter 来处理多 Fragment 页面的横向滑动。不过我碰到了一个问题,即当 Fragment 对应的数据集发生改变时,我希望能够通过调用 mAdapter.notifyDataSetChanged() 来触发 Fragment 页面使用新的数据调整或重新生成其内容,可是当我调用 notifyDataSetChange

2016-03-23 11:27:31 442

转载 Android开发不完整规范

命名规则1). 类名,接口名:以大写开头,如果一个类的类名由多个单词组成,所有单词的首字母必须大写,单词尽量写全称,不要简写,除非约定俗成的名字,例如:URL,RTMP,RTSP 这些广泛使用的专有名词,可以全部大写,也可以首字母大写。例如 HttpRequest,CourseActivity2). 局部变量,类的成员变量,类的成员函数,函数参数:以小写字母

2016-03-19 23:01:22 670

转载 Android毛玻璃效果的实现(本文系转载一种快速毛玻璃虚化效果实现)

看到这篇文章感觉不错转载一下,且自己做了一个小demo:链接在iOS设备上我们随处可见毛玻璃效果,而且最近越来越多的场合应用到了这种美观的虚化效果,包括本人的一个开源项目BlureImageView也是受此启发。所以,恰到好处的虚化效果能很好的改善用户体验,而且也能让你的app显得更加优雅。不过,我们目前在android上很少见到毛玻璃效果,我认为很重要的原因是性能问题,虚

2016-03-12 17:38:58 3391 2

转载 Android开发优化之——对Bitmap的内存优化

本文章系学习转载自:http://mobile.51cto.com/abased-410796.htm在Android应用里,最耗费内存的就是图片资源。而且在Android系统中,读取位图Bitmap时,分给虚拟机中的图片的堆栈大小只有8M,如果超出了,就会出现OutOfMemory异常。所以,对于图片的内存优化,是Android应用开发中比较重要的内容。1) 要及时回收Bitma

2016-03-01 16:06:30 452

转载 Android Gradle插件用户指南(转载)

1 简介这篇文档是基于0.9版本的Gradle插件,1.0以前的版本由于不兼容,可能会有所不同1.1 新的构建系统的目标新构建系统的目标是:使得代码和资源的重用更加简单使得创建同一应用程序的不同版本更加容易,不管是多个apk版本还是同一版本的多种定制使得配置,扩展和自定义构建更加容易良好的IDE集成1.2 为什么使用GradleGradle是一个高级

2016-02-24 17:28:43 922

转载 Mac下git tab自动补全

Git一个很好的版本控制工具,具体用法以及资料在此不作说明,本人目前只是学个皮毛。在Linux环境下(Ubuntu等),使用git命令时,使用tab键是可以实现自动补全的(auto completion),例如:git bra此时如果按Tab键,系统会自动补全为git branch对于上面的功能我想很多使用git的人应该深有体会的,但是在mac下,如果你不作

2016-01-14 20:53:09 1485

转载 Mac 下各种环境变量的配置

JAVA_HOME配置环境变量# 使用vim打开.bash_profile文件,加入java环境变量$ vim .bash_profileexport JAVA_HOME=$(/usr/libexec/java_home)检查是否成功$ source .bash_profile$ echo $JAVA_HOME $ java -version

2015-12-26 12:38:04 9338

转载 Mac 下配置环境变量造成命令行命令无法使用的解决方法

配置过安卓开发环境,改过bash_profile这个文件,最后不知怎么的只有cd命令能执行,我猜测可能修改bash_profile文件后没有保存 导致的     保存命令是:  source .bash_profile说下我的解决方法:1,在命令行中输入:export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin

2015-12-26 12:35:31 8155

转载 Android studio 导入project

Android Studio到现在已经发展到0.8+的版本了,最近也在试着使用它,原因是多方面的,一个毕竟是未来的趋势,二则是github上越来越多的大牛开源项目都是基于Android Studio的,因此会使用Android Studio就成为一件必须的任务。 关于Android Studio的下载和安装,网上一搜一大堆的文章,本文不准备累赘地谈论这些问题,主要说一下如何在A

2015-10-28 13:26:13 566

转载 java WeakReference

java语言中为对象的引用分为了四个级别,分别为 强引用 、软引用、弱引用、虚引用。本文只针对java中的弱引用进行一些分析,如有出入还请多指正。在分析弱引用之前,先阐述一个概念:什么是对象可到达和对象不可到达状态。其实很简单,我举个例子:现在有如下两个类class A class B,在JVM上生成他们两个类的实例分别为 instance a  instance

2015-10-19 00:09:58 387

转载 Java并发编程:Callable、Future和FutureTask

在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。  这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。  如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。  而自从Java 1.5开始,就提供了Callable和Future,通过它们可以在任务执行完毕

2015-10-18 15:27:04 368

转载 android viewPager的notifyDataSetChanged()的方法无法刷新页面的分析

很久不写blog了,今天遇到问题了记录一下比人的解决方法。Viewpager在调用notifyDataSetChanged()时,界面无刷新。  相信很多做过Viewpager的同学肯定遇到过这个问题,这个是bug还是android就是如此设计的,我们不做讨论。总之,它确实影响我们功能的实现了。  可能不少同学选择为Viewpager重新设置一遍适配器adapter,达到刷

2015-09-22 22:32:11 4114

转载 android---android:layout_weight属性

最近写Demo,突然发现了Layout_weight这个属性,发现网上有很多关于这个属性的有意思的讨论,可是找了好多资料都没有找到一个能够说的清楚的,于是自己结合网上资料研究了一下,终于迎刃而解,写出来和大家分享。首先看一下Layout_weight属性的作用:它是用来分配属于空间的一个属性,你可以设置他的权重。很多人不知道剩余空间是个什么概念,下面我先来说说剩余空间。看下面代码:

2015-07-16 13:34:22 495

转载 Java线程池相关

一简介线程的使用在java中占有极其重要的地位,在jdk1.4极其之前的jdk版本中,关于线程池的使用是极其简陋的。在jdk1.5之后这一情况有了很大的改观。Jdk1.5之后加入了java.util.concurrent包,这个包中主要介绍java中线程以及线程池的使用。为我们在开发中处理线程的问题提供了非常大的帮助。二:线程池线程池的作用:线程池作用就是限制系统中执行线程的数量。

2015-07-15 14:50:34 387

转载 AtomicInteger

这个类真的非常实用,更重要的是 它确实非常简单:附上自己的代码,可以自己试试:AtomicInteger,一个提供原子操作的Integer的类。在Java语言中,++i和i++操作并不是线程安全的,在使用的时候,不可避免的会用到synchronized关键字。而AtomicInteger则通过一种线程安全的加减操作接口。 代码:package test;

2015-07-15 14:48:14 478

转载 了解 uri, content provide,包括 data android:host,android:scheme

Content Provider这个东西在Android平台上是最常用的共享数据的方法(似乎应用程序之间共享数据也只有这种方法吧,待求证)。虽然常用,但是这个东 西要理解透彻还是要先掌握一些基础的。URI就是Content Provider(简称CP)的基础。我们要标识一个CP,就必须用URI这个东东。这就类似于我们要通过网址来标识某个特定网站,实际上网址URL本身 就是一种URI。URI全称

2015-07-13 19:26:52 2006

原创 Android中Activity的引导方式launcherMode的四种方式。

大飒飒大师

2015-07-10 20:03:39 4846

转载 Android开发相关简便框架

一、Guava Google的基于java1.6的类库集合的扩展项目,包括collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O等等. 这些高质量的API可以使你的JAVA代码更加优雅,更加简洁.功能模块:1. 基本工具 [Basic ut

2015-06-29 17:31:31 510

转载 android系统架构各层的一些介绍

本内容来自豆瓣。 一.android系统架构各层介绍   1. 应用层:应用是用java语言编写的运行在虚拟机上的程序,比如Email客户端,SMS短消息程序,日历等。   2. 应用框架层:这一层是编写Google发布的核心应用时所使用的API框架,开发人员同样可以使用这些框架来开发自己的应用,这样便简化了程序开发的结构设计,但是必须要遵守其框架的开发原则。   3. 系统运行库(C

2015-06-28 19:47:16 1813

转载 Google《Android性能优化》学习笔记

渲染篇1) Why Rendering Performance Matters现在有不少App为了达到很华丽的视觉效果,会需要在界面上层叠很多的视图组件,但是这会很容易引起性能问题。如何平衡Design与Performance就很需要智慧了。2) Defining ‘Jank’大多数手机的屏幕刷新频率是60hz,如果在1000/60=16.67ms内没有办法把这一帧

2015-06-22 23:02:20 445

转载 Android源码大放送之material design类型

本文转载自:http://www.apkbus.com/android-243232-1-1.html鉴于大家对源码的渴望,就算自己辛苦一点也要满足大家的需求,查看了几百个源码之后终于筛选出了这些精华。看到合适的马上下载哦,重要的是免费下载!!目前material design比较热门也比较新,对于刚刚接触的人来说完全就是一头雾水啊。这次筛选了material

2015-06-20 09:33:18 12697 3

原创 设计模式------命令模式

命令模式的设计主要是是为了完成请求调用者与请求接收

2015-06-15 15:27:04 449

原创 Observer观察者模式

软件开发中经常会遇到一个状态的改变而相应的触发一系列的连锁事件。相对这种应用场景的实现方式也是多种多样的可以通过设置回调方法等。但是从降低耦合,缩小程序变动影响的方面考虑使用观察者模式无疑是个不错的选择。在观察者模式中主要包括:被观察者,观察者;被观察者:从类图中可以看到,类中有一个用来存放观察者对象的Vector容器,这个Vector容器是被观察者类的核 心,另外还有三个方法:add

2015-06-12 23:06:34 455

BlurTest(毛玻璃效果的实现)

BlurTest(毛玻璃效果的实现)

2016-03-12

java 解析json数据夹包

这些是java解析json格式数据需要的一些夹包 我在此上传

2013-12-14

Android移动开发一本就够.part1.rar

Android移动开发一本就够.part1.rar

2013-06-14

jquery基础教程

jquery基础教程讲述了jquery的基本知识,

2013-06-14

图灵的秘密

阿兰·图灵是计算机科学的先驱,他创造了图灵机的思想,和人工智能的雏形,这本书系统地讲述了他的科学发现和人生经历。

2013-06-07

android+DDMS+截屏

借用android的ddms进行截屏的操作代码

2013-06-07

奇思妙想 15位计算机天才及其重大发现

奇思妙想 15位计算机天才及其重大发现 主要讲述了在计算机史做出重要贡献的天才科学家的思想生平和对未来计算机的发展的不得一个展望。

2013-02-03

html5记单词

一个用HTML5做的黑莓10应用,可以经过phoneGap转变为其他平台上的应用不如android 塞班

2012-11-19

学生信息管理系统(dos版)

完成一个简单的增删改查等功能 单位编写界面 未连接数据库

2012-06-27

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

TA关注的人

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