自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 资源 (6)
  • 收藏
  • 关注

转载 InterviewQuestion

InterviewQuestion工作原因,不再更新。整理的常见的问题 http://chenfuduo.cn整理来自这里水平有限,有错误请提出来。Android常见的问题标签(空格分隔): 移动开发常见算法问题的 Java 实现资料可见算法介绍可见算法是很多公司面试必须,国内 BAT 基本面试中都会有,尤以百度为盛。常见设计

2017-03-22 10:16:04 804

转载 Android Framework中的线程Thread及它的threadLoop方法

当初跟踪Camera的代码中的时候一直追到了HAL层,而在Framework中的代码看见了许许多多的Thread。它们普遍的特点就是有一个threadLoop方法。按照字面的意思应该是这个线程能够循环处理数据。对应我想到到了Java上层中的HandlerThread,这个估计也差不多,但当时心里总有一个疙瘩,想弄清楚它为什么能够循环,还有它到底是怎么循环起来的?Android中java世界的T

2017-03-22 09:09:13 997

转载 Android 4.0 事件输入(Event Input)系统

1. TouchScreen功能在Android4.0下不工作       原来在Android2.3.5下能正常工作的TouchScreen功能,移植到Android 4.0就不能正常工作了。凭直觉,Android4.0肯定有鬼。真是不看不知道,一看吓一跳。在Android 4.0中,Event Input地位提高了,你看看,在Adroid2.3.5中,它在frameworks/base/l

2017-03-22 08:55:38 477

转载 Android输入输出机制之来龙去脉之前生后世

先讲一下基本一般的输入处理方式的知识。一般的输入输出采用生产者,消费者模式,并构造队列进行处理,如下图   这种输入模型在android的系统中很多地方采用,先从最底层说起: 为了由于触屏事件频率很高,android设计者讲一个循环线程,拆分为两级循环,并做了个队列来进行缓冲。InputDispatcherThread和InputReaderThread      

2017-03-22 08:30:18 408

转载 android系统移植之按键驱动篇

平台:MX53_QSB开发板MX53_QSB开发板上一起有四个按键,分别为RESET,POWER,USER1,USER2。其中RESET为纯硬件复位按键,无须软件控制。POWER,USER1,USER2三个按键均需要程序控制。默认BSP包中将三个按钮全设置为上升和下降沿触发,当系统起来后,按下POWER键,进入睡眠状态,这时再按下POWER键唤醒时,系统系统被唤醒,但是一旦手松下,又触发了

2017-03-21 17:30:29 2320

转载 Android 基于Message的进程间通信 Messenger完全解析

转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/47017485;本文出自:【张鸿洋的博客】一、概述说到Android进程间通信,大家肯定能想到的是编写aidl文件,然后通过aapt生成的类方便的完成服务端,以及客户端代码的编写。如果你对这个过程不熟悉,可以查看Android aidl Binder框

2017-03-20 15:20:18 1129

转载 Android:学习AIDL,这一篇文章就够了(下)

前言上一篇博文介绍了关于AIDL是什么,为什么我们需要AIDL,AIDL的语法以及如何使用AIDL等方面的知识,这一篇博文将顺着上一篇的思路往下走,接着介绍关于AIDL的一些更加深入的知识。强烈建议大家在看这篇博文之前先看一下上一篇博文:Android:学习AIDL,这一篇文章就够了(上)注:文中所有代码均源自上一篇博文中的例子。 另:在看这篇博文之前,建议先将上一篇博文中的代码下载下

2017-03-20 15:08:00 241

转载 Android:学习AIDL,这一篇文章就够了(上)

前言在决定用这个标题之前甚是忐忑,主要是担心自己对AIDL的理解不够深入,到时候大家看了之后说——你这是什么玩意儿,就这么点东西就敢说够了?简直是坐井观天不知所谓——那样就很尴尬了。不过又转念一想,我辈年轻人自当有一种一往无前的锐气,标题大气一点岂不更好?并且大家都是文明人,总归更多的是理解与补充而不是侮辱与谩骂?所以最终还是厚颜用了这么一个不怎么有耻的标题。好了,接下来进入正题,谈谈我对

2017-03-20 15:03:15 206

转载 Android中的Service:Binder,Messenger,AIDL(2)

前言前面一篇博文介绍了关于Service的一些基本知识,包括service是什么,怎么创建一个service,创建了一个service之后如何启动它等等。在这一篇博文里有一些需要前一篇铺垫的东西,建议没有看过前一篇博文的同学先去看一下前一篇:Android中的Service:默默的奉献者 (1) 。但是在前一篇博文中也有一些遗漏的东西——主要是关于bindService()这一块的

2017-03-20 15:00:04 274

转载 Android中的Service:默默的奉献者 (1)

前言这段时间在看一些IPC相关的东西,这里面就不可避免的要涉及到service,进程线程这些知识点,而且在研究的过程中我惊觉自己对这些东西的记忆已经开始有些模糊了——这可要不得。于是我就干脆花了点心思温故了一下,就有了这篇博文。非常感谢Google的官方文档——尤其是其中部分文章有中文版了之后。正文1,什么是service?Service是一个可以在后台执行长时间操作而不使用用

2017-03-20 14:57:56 226

转载 Android Binder 全解析(3) -- AIDL原理剖析

摘要 本文是 Android 系统学习系列文章中的第二章节,在前面一些细节概念的铺垫下,大体上知道 Binder Framework 是怎么运作的,在这边文章中,将详细说明下 Binder Framework 的具体实现,这一套机制如何盘活整个 Android 系统。对此系列感兴趣的同学,可以收藏这个链接Android 系统学习,也可以点击 RSS订阅 进行订阅。 DONE:

2017-03-20 11:02:09 318

转载 Android Binder 全解析(2) -- 设计详解

摘要 在上一篇文章中介绍了什么是Binder? 为什么我们需要它?在这一篇文章中,将通过类比的思路来介绍 Binder 的设计原理,作为上一篇文章的补充。这篇文章只是从设计的概念出发进行理解,不设计太多的代码细节,如果想对具体实现感兴趣,可以参考老罗的文章。希望通过这篇文章,能够帮助大家理解整个 Binder 运作机制。 在这篇文章结束后,将介绍 Binder Token的 妙用,和 Deat

2017-03-20 10:56:59 313

转载 Android Binder 全解析(1) -- 概述

摘要 如果各位玩过《炉石传说》,那么可能对法师的职业卡「不稳定的传送门」很有印象,特别是没有欧洲玩家,经常能够拿到其他职业的强力单卡。Android 也提供了传送门,让我们可以像使用本地方法一样,调用其他进程的方法,他有一个响亮的名字,Binder! Binder 在 Android 是如此的重要,承当起整个Android的通信任务,作为优秀的Android工程师有什么理由不了解了?在接下来的

2017-03-20 10:55:29 228

转载 Android平台实现开机调试system_process

1 首先要理清一下什么是system_process1.1 system_process是我们在DDMS可以看到的名称。设置的地方在ActivityThread.java: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 private void attach(boolean

2017-03-16 15:46:21 779

转载 linux驱动的入口函数module_init的加载和释放

就像你写C程序需要包含C库的头文件那样,Linux内核编程也需要包含Kernel头文件,大多的Linux驱动程序需要包含下面三个头文件:#include #include #include 其中,init.h 定义了驱动的初始化和退出相关的函数,kernel.h 定义了经常用到的函数原型及宏定义,module.h 定义了内核模块相关的函数、变量及宏。      几乎每个linu

2017-03-14 09:40:48 545

转载 linux 按键驱动代码分析

原文地址:http://blog.csdn.NET/woshidahuaidan2011/article/details/51695147二、按键驱动1、对按键驱动添加设备信息linux-3.14.28对按键的驱动定义在Gpio_keys.c (drivers\input\keyboard)      文件中,在led驱动分析中,我们知道,只有平台设备和平台驱动两者的name名字一致才

2017-03-10 15:24:53 3246

转载 携程Android App插件化和动态加载实践

编者按:本文为携程无线基础团队投稿,介绍它们已经开源的Android动态加载解决方案DynamicAPK,本文作者之一,携程无线研发总监陈浩然将会在ArchSummit北京2015架构师大会上分享架构优化相关内容,欢迎关注。携程Android App的插件化和动态加载框架已上线半年,经历了初期的探索和持续的打磨优化,新框架和工程配置经受住了生产实践的考验。本文将详细介绍Android平台插件式

2017-02-21 15:32:01 826

转载 二叉树可视化--Graphviz

大家平时写C程序有没有种把内存里的数据结构全给画出来的冲动呢?数据量小的话,画起来还蛮简单,用viso,我前面的文章都用viso画的。之前写红黑树代码的时候,用的是命令行把整个树打印出来,不过只是一些小片段,很丑,还得自己手动再在纸上画一遍,非常麻烦,要是用程序就能把图画出来那就爽了。好了,推荐使用 Graphviz这个东东,so 一下就知道啦,功能挺丰富的,也提供了很多库(c,PHP,Pyt

2017-02-16 11:32:50 613

转载 树形结构的调试打印

这是一篇讲究套路的数据结构实战教学文,阅读需要约 20 分钟。先来回答三个问题。为什么要打印树形结构树形结构是算法里很常见的一种数据结构,从二叉树到多叉树,还有很多变种。很多涉及到算法的工作,就需要程序员自己手动实现树形结构,但出于结构本身复杂性,不太容易做对,需要一种调试工具来检测正确性。一般的调试手段无非就是加打印, GDB 上断点,写测试用例等,但这些局部以及外部的调试信息对于数

2017-02-09 17:23:01 4306

原创 VMware虚拟机中Ubuntu输入密码登陆后桌面黑屏的解决方法

第一种办法:虚拟机设置>显示器>勾掉“加速3D图形”第二种办法:登陆时使用2D图形模式登陆然后输入密码登陆,可能会先黑屏,不要着急,等待一分钟左右,就会进入系统桌面

2017-02-08 14:19:34 6893

转载 必须知道的八大种排序算法【java实现】

一、冒泡排序  冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。  冒泡排序的示例:冒泡排序的算法实现如下:【排序后,数组从小到大排列】 /* * 冒泡排序

2017-02-08 11:24:33 271

转载 八大排序算法

概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。         当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。   快速排序:是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键

2017-02-08 10:52:03 220

转载 Android消息机制2-Handler(Native层)

本文基于Android 6.0的源代码,来分析native层的消息处理机制相关源码framework/base/core/java/andorid/os/MessageQueue.javaframework/base/core/jni/android_os_MessageQueue.cppframework/base/core/java/andorid/os/Looper.ja

2017-02-06 16:49:19 3319

转载 Android消息机制1-Handler(Java层)

本文基于Android 6.0的源代码,来分析Java层的handler消息处理机制相关源码framework/base/core/java/andorid/os/Handler.javaframework/base/core/java/andorid/os/Looper.javaframework/base/core/java/andorid/os/Message.java

2017-02-06 16:35:42 23913

转载 主线程中的Looper.loop()一直无限循环为什么不会造成ANR?

引子:正如我们所知,在android中如果主线程中进行耗时操作会引发ANR(Application Not Responding)异常。造成ANR的原因一般有两种:当前的事件没有机会得到处理(即主线程正在处理前一个事件,没有及时的完成或者looper被某种原因阻塞住了)当前的事件正在处理,但没有及时完成为了避免ANR异常,android使用了Handler消息处理机制。

2017-02-06 15:53:19 9705

转载 图解Android - Android GUI 系统 (5) - Android的Event Input System

Android的用户输入处理Android的用户输入系统获取用户按键(或模拟按键)输入,分发给特定的模块(Framework或应用程序)进行处理,它涉及到以下一些模块:Input Reader: 负责从硬件获取输入,转换成事件(Event), 并分发给Input Dispatcher.Input Dispatcher: 将Input Reader传送过来的Events 分发给合适的窗口

2017-02-06 15:40:47 342

转载 深入理解Java Proxy机制

动态代理其实就是Java.lang.reflect.Proxy类动态的根据您指定的所有接口生成一个class byte,该class会继承Proxy类,并实现所有你指定的接口(您在参数中传入的接口数组);然后再利用您指定的classloader将 class byte加载进系统,最后生成这样一个类的对象,并初始化该对象的一些值,如invocationHandler,以即所有的接口对应的Meth

2017-01-22 15:47:13 260

转载 非阻塞同步算法与CAS(Compare and Swap)无锁算法

锁(lock)的代价锁是用来做并发最简单的方式,当然其代价也是最高的。内核态的锁的时候需要操作系统进行一次上下文切换,加锁、释放锁会导致比较多的上下文切换和调度延时,等待锁的线程会被挂起直至锁释放。在上下文切换的时候,cpu之前缓存的指令和数据都将失效,对性能有很大的损失。操作系统对多线程的锁进行判断就像两姐妹在为一个玩具在争吵,然后操作系统就是能决定他们谁能拿到玩具的父母,这是很慢的。用户态

2016-12-17 08:56:43 776

转载 为什么volatile不能保证原子性而Atomic可以?

在上篇《非阻塞同步算法与CAS(Compare and Swap)无锁算法》中讲到在Java中long赋值不是原子操作,因为先写32位,再写后32位,分两步操作,而AtomicLong赋值是原子操作,为什么?为什么volatile能替代简单的锁,却不能保证原子性?这里面涉及volatile,是java中的一个我觉得这个词在Java规范中从未被解释清楚的神奇关键词,在Sun的JDK官方文档是这样形容

2016-12-17 08:48:47 387

转载 Android7.0 Ninja编译原理

#############################################本文为极度寒冰原创,转载请注明出处#############################################引言 使在Android N的系统上,初次使用了Ninja的编译系统。对于Ninja,最初的印象是用在了Chromium open source code

2016-12-12 08:39:26 1873

转载 Android Linker学习笔记

0x00 知识预备Linker是Android系统动态库so的加载器/链接器,要想轻松地理解Android linker的运行机制,我们需要先熟悉ELF的文件结构,再了解ELF文件的装入/启动,最后学习Linker的加载和启动原理。鉴于ELF文件结构网上有很多资料,这里就不做累述了。0x01 so的加载和启动我们知道如果一个APP需要使用某一共享库so的话,它会在JAVA层声明代码

2016-12-08 21:32:15 753

转载 Android 6.0下出错: UnsatisfiedLinkError: dlopen failed . text relocations

Android 6.0下报错: UnsatisfiedLinkError: dlopen failed ... text relocations首先贴一下这个问题的官方答复:https://code.google.com/p/Android-developer-preview/issues/detail?id=3028 先介绍一下这个问题的背景 (没兴趣看的,

2016-12-08 21:11:19 553

转载 xxx.so has text relocations. This is wasting memory and is a security risk. Please fix

最近使用jni编译so文件,发现在Android M中将之前一直视为warning的text relocation升级为了error ,直接导致system.load so文件的时候失败。翻了网上各种资料,关于text relocation的解决办法总结了一下:这个错误的主要原因是加载.so文件的代码段时,代码段引用的数据对象需要重定位, 重定位会修改代码段的内容,这就造成每个使用

2016-12-08 21:04:21 1020

原创 关于Android N,Eclipse跟Studio中的File Explorer无法显示文件列表

插入Android N真机后,发现Eclipse跟Studio 中 File Explorer都无法显示文件列表,但插入Android N以前的真机正常。上网搜到说这是由于ddmlib.jar过旧的缘故,以下为google原述:Put the attachment into libs of com.android.ide.eclipse.ddms_###.jarAnd de

2016-12-07 19:15:32 1499

转载 android N编译

转载自:http://blog.csdn.net/luvzhan/article/details/53282968?utm_source=itdadao&utm_medium=referralandroid N 编译环境配置需要使用openjdk 8,所以,有两种方法:方法一: sudo apt-get update; sudo apt-get install openjd

2016-12-06 21:17:56 2011 1

转载 编译android源码时,jack server 出现out of memory error 错误的解决方法

编译android源码时,jack server 出现out of memory error 错误的解决方法:问题现象如下:问题的解决方案如下,共两步:Step1:修改jack server相关源码Step2:重启Jack server./prebuilts/sdk/tools/jack-admin stop-server用以上命令关闭即可,重新ma

2016-12-06 21:14:34 2691

转载 Android插件化探索(一)类加载器DexClassLoader

本文部分内容参考自《Android内核剖析》基本概念在Java环境中,有个概念叫做“类加载器”(ClassLoader),其作用是动态装载Class文件。标准的JavaSDK中有一个ClassLoader类,借助它可以装载想要的Class文件,每个ClassLoader对象在初始化时必须指定Class文件的路径没有使用过ClassLoader的读者可能会问:“在过去的程序开发中

2016-12-02 17:23:54 487

转载 Android7(N)开发者应该知道的一切(最全)

Android N for Developers转载请注明: http://blog.csdn.net/wen_demo/article/details/51943340 1.多窗口支持Android N 添加了对同时显示多个应用窗口的支持。 在手持设备上,两个应用可以在“分屏”模式中左右并排或上下并排显示。 在电视设备上,应用可以使用“画中画”模式,在用户与另一个

2016-12-02 16:05:43 743

转载 Android 7.0中的多窗口实现解析

在以往的Android系统上,所有Activity都是全屏的,如果不设置透明效果,一次只能看到一个Activity界面。但是从Android N(7.0)版本开始,系统支持了多窗口功能。在有了多窗口支持之后,用户可以同时打开和看到多个应用的界面。并且系统还支持在多个应用之间进行拖拽。在大屏幕设备上,这一功能非常实用。本文将详细讲解Android系统中多窗口功能的实现。多窗口功能介绍

2016-12-02 16:01:44 3892

转载 Android N App分屏模式完全解析(下)

在上篇中,介绍了什么是App分屏模式,以及如何设置我们的App来进入分屏模式。这次我们看一下,作为开发者,我们应该如何让自己的App进入分屏模式,当App进入分屏模式时,我们注意哪些问题。简单地说,我认为除了保证分屏时App功能、性能正常以外,我们需要重点学习 如何在分屏模式下打开新的Activity 以及 如何实现跨App/Activity的拖拽功能。用分屏模式运行你的AppAn

2016-12-02 15:52:25 1005

天气应用例子(适合初级编程者)

根据中国天气网api获取中国天气网天气数据。代码中有详细注释,适合初级编程者。下载后只需修改访问中国天气网的api即可获取最新天气数据。

2015-07-22

qsort 与sort 的比较

在c++中qsort()排序函数的使用qsort函数应用大全,在同样的元素和同样的比较条件下,sort()的执行速度都比qsort()要快。另外,sort()是类属函数,可以用于比较任何容器,任何元素,任何条件。

2009-06-30

贪心算法解会场活动安排问题

假设要在足够多的会场里安排一批活动,并希望使用尽可能少的会场.设计一个有效的贪心算法进行安排(这个问题实际上是著名的图着色问题,若将每一个活动作为图的一个顶点,不相容活动间用边相连.使相邻顶点着有不同颜色的最小着色数,相应于要找的最小会场数.)

2009-06-30

递归解编辑距离问题源码

设A和B是2个字符串.要用最少的字符操作将字符串A转换为字符串B.这里所说的字符操作包括: (1)删除一个字符 (2)插入一个字符 (3)将一个字符改为另一个字符 将字符串A变换为字符串B所用的最少字符操作数称为字符串A到B的编辑距离,记为d(A,B).试设计一个有效算法,对任给的2个字符串A和B,计算出他们的编辑距离d(A,B)

2009-06-30

用快速排序解众数问题源码

给定含有n 个元素的多重集合S ,每个元素在S中出现的次数称为该元素的重数.多重集S中重数最大的元素称为众数. 例如,S = {1,2,2,2,3,5} 多重集S 的众数是2,其重数是3.

2009-06-30

迷宫问题c++源程序

用c++写的有关迷宫问题的算法,源程序,希望对大家有用!

2009-03-12

空空如也

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

TA关注的人

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