网络给我们带来了很多方便,查阅我们目前认知范围外的道理.但是,凡事也要学会分辨,不然可能会误导你. 话说,最近的一个项目(Mercury-Project),接近尾声中.然而,在调试一个demo时,却遇到了问题. 理一下问题由来: 1.目标:将Android下的一些基础工具移植到纯正Linux平台上用. 2.移植RefBase时,用到了原子操作: android_atomic_cmpxchg(curCount, curCount+1, &impl->mStrong) 怎么办呢?因为这个api是…
代码的实现位于文件system/core/include/cutils中 http://androidxref.com/4.4.3_r1.1/xref/system/core/include/cutils/atomic.h 16 17#ifndef ANDROID_CUTILS_ATOMIC_H 18#define ANDROID_CUTILS_ATOMIC_H 19 20#include <stdint.h> 21#include <sys/types.h> 22 23#ifde…
由于<深入理解Android 卷一>和<深入理解Android卷二>不再出版.而知识的传播不应该由于纸质媒介的问题而中断,所以我将在CSDN博客中全文转发这两本书的全部内容. 第8章  深入理解Surface系统 本章主要内容 ·  具体分析一个Activity的显示过程. ·  具体分析Surface. ·  具体分析SurfaceFlinger. 本章涉及的源代码文件名称及位置: · ActivityThread.java framework/base/core/java/an…
Thread类是Android为线程操作而做的一个封装.代码在Thread.cpp中,其中还封装了一些与线程同步相关的类. Thread类 Thread类的构造函数中的有一个canCallJava Thread.cpp /system/core/libutils/Threads.cpp 线程创建流程 /* * Copyright (C) 2007 The Android Open Source Project * * Licensed under the Apache License, Vers…
前言 最近在一直准备总结一下Android上的线程管理,今天先来总结一下Thread使用. 线程管理相关文章地址: Android线程管理之Thread使用总结 Android线程管理之ExecutorService线程池 Android线程管理之ThreadPoolExecutor自定义线程池 Android线程管理之AsyncTask异步任务 Android线程管理之ThreadLocal理解及应用场景 实现Thread两种方式 1.)继承Thread类 /** * 继承Thread方式 *…
第九章心得: HAL ( Hardware Abstraction Layer,硬件抽象腔,〉是建立在Linux驱动之上的一套翻字库.这套程序 j率并不属于 Linux 内核, 而是属于 Linux 内核层之上的应用层. 加入hal的目的: (1)统一硬件的调用接口.由于HAL有标准的调用接卧,所以可以利用 HAL屏蔽Linux 驱动复杂,不统一的借口 (2)解决了GPl版权问题.由于 Linux 内核基于GPL协议,而Android基于Apache Licence 2 .0 ,协议.因此Goo…
研究Android的时候,经常会遇到sp.wp的东西,网上一搜,原来是android封装了c++中对象回收机制.说明:1. 如果一个类想使用智能指针,那么必须满足下面两个条件:    a. 该类是虚基类RefBase的子类或间接子类    b. 该类必须定义虚构造函数.如virtual ~MyClass();   2. 本文以类BBinder来进行说明,其余类使用sp或wp的情况类似3. 代码路径:frameworks/base/libs/utils/RefBase.cpp       fram…
在开发Android的程序的时候sqlite数据库是经常用到的:在多线程访问数据库的时候会出现这样的异常:java.lang.IllegalStateException: Cannot perform this operation because the connection pool has been closed.或 java.lang.IllegalStateException: attempt to re-open an already-closed object: SQLiteData…
http://blog.csdn.net/fangchongbory/article/details/7645815         android 常见死机问题--log分析=================================================================================================== 一般在平时工作中,基本上很多代码可以在eclipse+ndk进行调试,但如果需要用到具体的硬件设备,如媒体播放设备无法模拟的…
http://blog.csdn.net/fangchongbory/article/details/7734199   目录(?)[+] 单例模式常见情景 首先实现1中的单例模式A 实现2中单例模式B 实现3单例模式C 实现4单例模式D 可带参数单例模式E 终极版单例模式F android中源码单例模式举例 日历模块 Collator类 Editable类 AccessibilityManager类   1.单例模式常见情景 设计模式中,最简单不过的就是单例模式.先看看单例模式 原文:http…
一般在平时工作中,基本上很多代码可以在eclipse+ndk进行调试,但如果需要用到具体的硬件设备,如媒体播放设备无法模拟的情况下,只能上硬件(盒子或手机)上进行调试.此时唯一的调试手段就是logcat产生log信息进行分析问题了. 什么时候会有Log文件的产生 ?一般在如下几种情况会产生log文件 . 1.程序异常退出 uncaused exception 2.程序强制关闭 Force Closed (简称FC) 3.程序无响应 Application No Response(简称ANR),一…
Contacts Provider 今年加入了某字幕组,加之杂事颇多,许久未添新文了,惭愧之极. 在听闻 Google 即将重返中国后,近日忽又发现官方网站正在放出 API 中文版,比如本文.当然不是大家所译,但至少句子结构较通顺,窃以为比 MSDN 中文版好些.虽有些生硬(比如将 Provider 译为“提供者”,有趣得紧),但好在前无古人,也许 Google 自此便统一了自己的中文术语也未可知.能让更多的国人精确领悟 Android 的精髓,肯定是好事,希望 Google 继续坚持. 这事应…
Content Provider Basics 英文原文:http://developer.android.com/guide/topics/providers/content-provider-basics.html 采集日期:2015-01-07 在本文中 概述 访问 Provider Content URI 从 Content Provider 读取数据 申请读取权限 建立查询请求 显示查询结果 从查询结果中获取数据 Content Provider 相关权限 插入.修改.删除数据 插入数…
简介 项目开发中发现问题.解决问题这个过程中会出现很多问题,比如重复出现.某个问题的遗留,这些问题的本质就是设计模式.今天记录设计模式的知识点. 内容 在java以及其他的面向对象设计模式中,类与类之间主要有6种关系,他们分别是:依赖.关联.聚合.组合.继承.实现.它们的耦合度依次增强. 依赖关系:对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系.关联关系:分为单向关联和双向关联.在java中,单向关联表现为:类A当中使用了…
Contacts Provider 电话簿(注:联系人,联络人.通信录)提供者 ------------------------------- QUICKVIEW 快速概览 * Android's repository of information about people. * Android的关于人的信息的仓库. * Syncs with the web. * 与互联网同步. * Integrates social stream data. * 集成社交流数据. IN THIS DOCUME…
http://www.cnblogs.com/qianxudetianxia/category/312863.html Android设计模式系列(12)--SDK源码之生成器模式(建造者模式) 摘要: 建造者模式把构造和表示分离开,根据客户需求生产一个相应的对象.本来呢,我们根据Builder接口实现不同的具体的ConcreteBuilder,就可生产不同的对象了.但是,下面例子的只有一个Builder,所以也没有接口Builder,也没有其他的ConcreteBuilder.但是我今天要讲的…
数据库是应用开发中常用的技术,在Android应用中也不例外.Android默认使用了SQLite数据库,在应用程序开发中,我们使用最多的无外乎增删改查.纵使操作简单,也有可能出现查找数据缓慢,插入数据耗时等情况,如果出现了这种问题,我们就需要考虑对数据库操作进行优化了.本文将介绍一些实用的数据库优化操作,希望可以帮助大家更好地在开发过程中使用数据库. 建立索引 很多时候,我们都听说,想要查找快速就建立索引.这句话没错,数据表的索引类似于字典中的拼音索引或者部首索引. 索引的解释 重温一下我们小…
AudioTrack的start方法用于实现Android的音频输出,start究竟做了什么?回顾一下上一小节createTrack_l的最后部分,通过binder返回了一个Track的句柄,并以被保存了下来 status_t AudioTrack::createTrack_l(...) { sp<IAudioTrack> track = audioFlinger->createTrack(...); mAudioTrack = track; } start主要就是调用这个track的s…
原生Calendar代码: 5.0Calendar源码.rar 提取的JavaDoc: Calendar的javadoc.rar 1. AsyncQueryService和AsyncQueryServiceHelper. Calendar的主入口是AllInOneActivity,这个类实现了一个重要的接口--CalendarController.EventHandler,它的父类是AbstractCalendarActivity. 先来看AbstractCalendarActivity,它是A…
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6786239 Android 系统的运行时库层代码是用C++来编写的,用C++来写代码最容易出错的地方就是指针了,一旦使用不当,轻则造成内存泄漏,重则造成系统崩溃.不过系统为 我们提供了智能指针,避免出现上述问题,本文将系统地分析Android系统智能指针(轻量级指针.强指针和弱指针)的实现原理. 在使用C++来编写代码的过程中,指针使用不当造成…
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/7932268 在前面一篇文章中,我们分析了Android应用程序请求SurfaceFlinger服务创建Surface的过程.有了Surface之后,Android应用程序就可以在上面绘制自己的UI了,接着再请求SurfaceFlinger服务将这个已经绘制好了UI的Surface渲染到设备显示屏上去.在本文中,我们就将详细分析Android应用…
  [转载至其它博客] http://blog.csdn.net/djy1992/article/details/9339917 1引言 Android froyo版本多媒体引擎做了变动,新添加了stagefright框架,并且默认情况android选择stagefright,弃用之前的opencore,仅仅对opencore中的omx-component部分做了引用. Stagefright自android2.0后才添加,其稳定性有待商榷,是否存在bug也未知,opencore自android…
本博客为原创,转载请注明出处,谢谢. 参考博文:Android系统的智能指针(轻量级指针.强指针和弱指针)的实现原理分析 C++中最容易出错的地方莫过于指针了,指针问题主要有两类,一是内存泄露,二是无效引用.new出来的对象忘记delete,造成这部分内存无法使用无法回收,引起内存泄露的问题:多个指针指向同一个对象,在一处delete之后,其他指针在不知情的情况下继续引起访问错误,甚至形成一个引发恶意攻击的漏洞. Android底层是由C++实现的,在指针和对象的管理上也下了不少的功夫,实现的智…
国庆节放假.搞了半个月都没有上班了,coding的时候一点都不在状态,本来这篇文章是在国庆节前写完的,可是由于自己的懒 惰,导致延期到国庆节,哎,这种习惯真心不好呀...不多说了以下来进入正题 之前我们解读了Handler机制,今天再来看一下AsyncTask类,由于这两个类使我们在Android进行耗时的操作的时候,不影响主线 程的情况下常常使用的两个类.我们先来看一下AsyncTask类源代码中定义的变量: private static final ThreadFactory sThread…
本文属于Android局域网内的语音对讲项目系列,<实时Android语音对讲系统架构>阐述了局域网内Android语音对讲功能的框架,本文在此基础上进行了优化,包括音频的录制.播放,通信方式,以及整体架构的改进. 本文主要包括以下内容: 通过生产者-消费者模式保证数据链路的鲁棒性 改进音频录制及播放,提高语音通信质量 采用多播实现设备发现及跨路由通信 实现对讲进程与UI进程的通信(AIDL) 一.通过生产者-消费者模式保证数据链路的鲁棒性 1. 从责任链到生产者-消费者 在<实时And…
本文是作者在Android开发实践中的随手速记,记录一些小问题的解决方案和注意事项,持续更新. 以下是速记内容,若有不严谨的地方,望小伙伴们指出. 1.Module 不生成R文件,可尝试取消对该Module的引用,取消后AS会再次编译工程,看看此时能否生成R. 2.Activity theme设置错误时,会出现: java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams cannot be cast to com…
转自:http://www.ituring.com.cn/article/177180 作者/ Erik Hellman Factor10咨询公司资深移动开发顾问,曾任索尼公司Android团队首席架构师,主导Xperia系列产品开发:精通移动应用.Web技术.云计算和三维图形,定期在DroidCon.JFokus.JavaOne和其他专业开发人员大会上发表演讲.关于Erik的更多信息,可访问他的博客http://blog.hellsoft.se. Java平台一般有三个版本:Java ME(微…
在Android开发的漫漫长途上的一点感想和记录,如果能给各位看官带来一丝启发或者帮助,那真是极好的. 前言 上一篇博文中,主要说了些线程以及锁的东西,我们大多数的并发开发需求,基本上可以用synchronized或者volatile解决,虽然synchronized已经被JDK优化了,但有的时候我们还是觉得synchronized太重了, 比如说一个电影院卖票,这个票数是一定的而且共享的,我想尽快的卖票并且知道还有多少余票.在程序员看来这就是个票数自减以及获取最新票数的操作. private…
作者:淘萄桃 链接: https://www.jianshu.com/p/a07ccaad832d 本文由作者授权发布. 笔者参加18年阿里春招,有幸最终拿到阿里offer,base杭州,岗位客户端开发.一直忙于其他事情,拿到意向已经过去十多天,在此分享一些关于面试的干货,攒一波RP,回馈社会. 从阿里面试说起,阿里的面试一般采用电话面试的形式.笔者一共参加五轮面试,一面电话面试+在线编程,二面视频面试+在线编程,三面部门boss面试,四面交叉面,五面HR.在此分享五轮面试的大概问题吧,笔者是a…
Android系统的智能指针(轻量级指针.强指针和弱指针)的实现原理分析 分类: Android 2011-09-23 00:59 31568人阅读 评论(42) 收藏 举报 androidclassdebuggingdeleteobject Android系统的运行时库层代码是用C++来编写的,用C++来写代码最容易出错的地方就是指针了,一旦使用不当,轻则造成内存泄漏,重则造成系统 崩溃.不过系统为我们提供了智能指针,避免出现上述问题,本文将系统地分析Android系统智能指针(轻量级指针.强…