学习Android之内部类
摘要:java语言允许在类中再定义类,这种在其它类内部定义的类就叫内部类。内部类又分为:常规内部类、局部内部类、匿名内部类和静态嵌套类四种。我们内部类的知识在Android手机开发中经常用到。一、常规内部类所谓常规内部类,或者说内部类,指的就是除去后面三种之外的内部类(这算什么解释。。。)先写一个最简单的内部类的例子,大家感觉一下:view sourceprint?1 public class Outer {2 public class Inner{3 }4 }编译一下,我们看到目录中出现了两个class文件,其中有一个文件名叫做Outer$Inner.class,带了一个$符号,这个特点让我们很容
阅读全文
posted @
2013-11-10 10:14
Rosepotato
阅读(580)
推荐(0)
Android横竖屏切换总结
摘要:Android横竖屏切换总结(Android资料)Android横竖屏要解决的问题应该就两个:一.布局问题二.重新载入问题1.布局问题:如果不想让软件在横竖屏之间切换,最简单的办法就是在项目的AndroidManifest.xml中找到你所指定的activity中加上android:screenOrientation属性,他有以下几个参数:"unspecified":默认值 由系统来判断显示方向.判定的策略是和设备相关的,所以不同的设备会有不同的显示方向. "landscape":横屏显示(宽比高要长) "portrait":竖屏显示
阅读全文
posted @
2013-11-10 09:44
Rosepotato
阅读(652)
推荐(1)
深入理解Android内存管理原理(六)
摘要:一般来说,程序使用内存的方式遵循先向操作系统申请一块内存,使用内存,使用完毕之后释放内存归还给操作系统。然而在传统的C/C++等要求显式释放内存的编程语言中,记得在合适的时候释放内存是一个很有难度的工作,因此Java等编程语言都提供了基于垃圾回收算法的内存管理机制:垃圾内存回收算法常见的垃圾回收算法有引用计数法(Reference Counting)、标注并清理(Mark and Sweep GC)、拷贝(Copying GC)和逐代回收(Generational GC)等算法,其中Android系统采用的是标注并删除和拷贝GC,并不是大多数JVM实现里采用的逐代回收算法。由于几个算法各有优缺
阅读全文
posted @
2013-10-26 22:52
Rosepotato
阅读(877)
推荐(0)
内存管理-常见内存泄露-(5)
摘要:尊重原创作者,转载请注明出处:http://blog.csdn.net/gemmem/article/details/13017999此文承接我的另一篇文章:Android进程的内存管理分析首先了解一下dalvik的Garbage Collection:如上图所示,GC会选择一些它了解还存活的对象作为内存遍历的根节点(GC Roots),比方说thread stack中的变量,JNI中的全局变量,zygote中的对象(class loader加载)等,然后开始对heap进行遍历。到最后,部分没有直接或者间接引用到GC Roots的就是需要回收的垃圾,会被GC回收掉。如下图蓝色部分。Java内存
阅读全文
posted @
2013-10-26 16:18
Rosepotato
阅读(853)
推荐(0)
Android 内存管理分析(四)
摘要:尊重原创作者,转载请注明出处:http://blog.csdn.net/gemmem/article/details/8920039最近在网上看了不少Android内存管理方面的博文,但是文章大多都是就单个方面去介绍内存管理,没有能全局把握,缺乏系统性阐述,而且有些观点有误。这样对Android内存管理进行局部性介绍,很难使读者建立系统性概念,无法真正理解内存管理,对提高系统优化和系统稳定性分析方面的能力是不够的。 我结合自己的一些思考和理解,从宏观层面上,对内存管理做一个全局性的介绍,在此与大家交流分享。首先,回顾一下基础知识,基础知识是理解系统机制的前提和关键:1、 进程的地址空间在32.
阅读全文
posted @
2013-10-26 12:04
Rosepotato
阅读(616)
推荐(0)
Android 之 内存管理-查看内存泄露(三)
摘要:概述在android的开发中,要时刻主要内存的分配和垃圾回收,因为系统为每一个dalvik虚拟机分配的内存是有限的,在google的G1中,分配的最大堆大小只有16M,后来的机器一般都为24M,实在是少的可怜。这样就需要我们在开发过程中要时刻注意。不要因为自己的代码问题而造成OOM错误。JAVA的内存管理大家都知道,android应用层是由java开发的,android的davlik虚拟机与jvm也类似,只不过它是基于寄存器的。因此要了解android的内存管理就必须得了解java的内存分配和垃圾回收机制。在java中,是通过new关键字来为对象分配内存的,而内存的释放是由垃圾收集器(GC)来
阅读全文
posted @
2013-10-26 11:18
Rosepotato
阅读(336)
推荐(0)
Android 内存管理(二)
摘要:很多开发者都是从j2me或j2ee上过来的,对于内存的使用和理解并不是很到位,Android开发网本次给大家一些架构上的指导,防止出现豆腐渣工程的出现。Android作为以Java语言为主的智能平台对于我们开发一些高性能和质量的软件来说了解Android程序内存管理机制是必须的。Android的Dalvik VM在基础方面和SUNJVM没有什么大的区别仅仅是字节码的优化,我们要知道什么时候用gc什么时候用recycle以及到底用不用finalization,因为Java对内存的分配只需要new开发者不需要显示的释放内存,但是这样造成的内存泄露问题的几率反而更高。 1.对于常规开发者而言需要了解
阅读全文
posted @
2013-10-26 10:49
Rosepotato
阅读(255)
推荐(0)
正确认识Android的内存管理机制,合理关闭进程 (一)
摘要:随着大家收货后会有很多乐粉晒内存,为啦方便大家,在网上搜集了一些相关Andriod管理的相关机制合理管理内存,整理下发个贴。首先要知道Android系统是基于Linux 2.6内核开发的开源操作系统(linux是啥都不知道自己去百度吧),而linux系统的内存管理有其独特的动态存储管理机制。不过Android系统对Linux的内存管理机制进行了优化,Linux系统会在进程活动停止后就结束该进程,而Android把这些进程都保留在内存中,直到系统需要更多内存为止。这些保留在内存中的进程通常情况下不会影响整体系统的运行速度,并且当用户再次激活这些进程时,提升了进程的启动速度。如果你懂java,就会
阅读全文
posted @
2013-10-26 10:35
Rosepotato
阅读(1888)
推荐(0)
谈谈Runtime类中的freeMemory,totalMemory,maxMemory等几个方法
摘要:最近在网上看到一些人讨论到java.lang.Runtime类中的freeMemory(),totalMemory(),maxMemory ()这几个方法的一些问题,很多人感到很疑惑,为什么,在java程序刚刚启动起来的时候freeMemory()这个方法返回的只有一两兆字节,而随着 java程序往前运行,创建了不少的对象,freeMemory()这个方法的返回有时候不但没有减少,反而会增加。这些人对freeMemory()这 个方法的意义应该有一些误解,他们认为这个方法返回的是操作系统的剩余可用内存,其实根本就不是这样的。这三个方法反映的都是java这个进程的内存情 况,跟操作系统的内存根本
阅读全文
posted @
2013-10-25 23:12
Rosepotato
阅读(230)
推荐(0)
MediaPlayer中创建AudioTrack的过程
摘要:使用MediaPlayer播放音视频时,会创建AudioTrack对象用于播放音频数据。下面就来看看MediaPlayer创建AudioTrack的过程:1.创建AudioTrack对象MediaPlayer类中并没有直接创建AudioTrack,而是把创建AudioTrack对象的操作放在了MediaPlayerService类的内部类AudioOutput中具体代码是在 MediaPlayerService::AudioOutput::open函数中,通过新建(new)一个AudioTrack对象,赋给AudioOutput类的成员变量mTrack来实现的。mTrack是AudioTrac
阅读全文
posted @
2013-09-25 13:54
Rosepotato
阅读(863)
推荐(0)
MediaPlayer和AudioTrack播放Audio的区别与联系
摘要:转自http://blog.csdn.net/ameyume/article/details/7618820播放声音可以用MediaPlayer和AudioTrack,两者都提供了java API供应用开发者使用。虽然都可以播放声音,但两者还是有很大的区别的。 其中最大的区别是MediaPlayer可以播放多种格式的声音文件,例如MP3,AAC,WAV,OGG,MIDI等。MediaPlayer会在framework层创建对应的音频解码器。 而AudioTrack只能播放已经解码的PCM流,如果是文件的话只支持wav格式的音频文件,因为wav格式的音频文件大部分都是PCM流。AudioTrac
阅读全文
posted @
2013-09-25 13:52
Rosepotato
阅读(452)
推荐(0)
Android 启动过程总结
摘要:SystemServer的启动 frameworks/base/services/java/com/android/server/SystemServer.java: run() 其中调用ActivityManagerService.installSystemProviders(), 最终会调用到frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/下 的各个content providers的onCreate()函数,初始化数据库内容。。。===========================
阅读全文
posted @
2013-09-25 12:32
Rosepotato
阅读(409)
推荐(0)
第三部分 overlay 学习
摘要:前文仅了解了overlay HAL的架构,下面继续看看系统层是如何调用Overlay模块。1、测试代码frameworks/base/libs/surfaceflinger/tests/overlays/overlays.cpp提供了一个简单的overlay调用流程,可惜这个测试程序有错误, 在sp surface = client->createSurface(getpid(), 0, 320, 240, PIXEL_FORMAT_UNKNOWN, ISurfaceComposer::ePushBuffers);这句话编译不过去,错误在Surface的申请,和overlay无关。我们来
阅读全文
posted @
2013-09-24 17:46
Rosepotato
阅读(348)
推荐(0)
第二部分 overlay 架构初探
摘要:1 overlay可能支持的颜色格式/* possible overlay formats可能支持的颜色格式 */enum { OVERLAY_FORMAT_RGBA_8888 = HAL_PIXEL_FORMAT_RGBA_8888, OVERLAY_FORMAT_RGB_565 = HAL_PIXEL_FORMAT_RGB_565, OVERLAY_FORMAT_BGRA_8888 = HAL_PIXEL_FORMAT_BGRA_8888, OVERLAY_FORMAT_YCbCr_422_SP = HAL_PIXEL_FORMAT_YCbCr_422_SP, OVER...
阅读全文
posted @
2013-09-24 17:43
Rosepotato
阅读(657)
推荐(0)
第一部分 android display(sufaceflinger & overlay)
摘要:最近在做0718的framebuffer驱动,fb驱动本身还是比较简单的,但重要的是需要按照android实现fb驱动的overlay特性,因此转一些关于android overlay的文章,以供以后参考。转载至:http://blog.csdn.net/yili_xie/archive/2009/11/12/4803527.aspxAndroid Display System --- Surface Flinger SurfaceFlinger 是Android multimedia 的一个部分,在Android 的实现中它是一个service ,提供系统 范围内的surface comp.
阅读全文
posted @
2013-09-24 17:36
Rosepotato
阅读(938)
推荐(0)
第二部分 MediaPlayer的接口与架构
摘要:第二部分 MediaPlayer的接口与架构2.1 整体框架图 MediaPlayer的各个库之间的结构比较复杂,可以用下图的表示 在各个库中,libmedia.so位于核心的位置,它对上层的提供的接口主要是MediaPlayer类,类libmedia_jni.so通过调用MediaPlayer类提供对JAVA的接口,并且实现了android.media.MediaPlayer类。 libmediaplayerservice.so是Media的服务器,它通过继承libmedia.so的类实现服务器的功能,而libmedia.so中的另外一部分内容则通过进程间通讯和libmediaplaye..
阅读全文
posted @
2013-09-23 15:14
Rosepotato
阅读(1237)
推荐(1)
第三部分 MediaPlayer的主要实现分析
摘要:第三部分 MediaPlayer的主要实现分析3.1 JAVA程序部分 在packages/apps/Music/src/com/android/music/目录的MediaPlaybackService.java文件中,包含了对MediaPlayer的调用。 在MediaPlaybackService.java中包含对包的引用:import android.media.MediaPlayer; 在MediaPlaybackService类的内部,定义了MultiPlayer类:private class MultiPlayer { private MediaPlayer mMedia...
阅读全文
posted @
2013-09-23 15:09
Rosepotato
阅读(549)
推荐(1)
第一部分 Android MediaPlayer 概述
摘要:【IT168 技术文档】本文主要介绍的是Android中很重要也最为复杂的媒体播放器(MediaPlayer)部分的架构。对于Android这样一个完整又相对复杂的系统,一个MediaPlayer功能的实现不在其具体的功能,而是具体功能如何适应Android系统Android MediaPlayer的主要具体实现在OpenCore的Player中,这部分不是本文的关注点。本文关注的是MediaPlayer系统的架构,其他的一些Android的应用程序也使用类似的架构。 对于开源事业在中国的发展,hanchao3c认为应该共享的不仅仅是代码,文档、设计思想、理念甚至对于技术的理解都应该得到充..
阅读全文
posted @
2013-09-23 14:43
Rosepotato
阅读(267)
推荐(1)
Android反编译教程
摘要:本文摘自 http://blog.csdn.net/ithomer/article/details/6727581本文Android反编译教程,测试环境:Win7 Ultimate x64Ubuntu 12.04 x86_x64反编译工具包下载(2012-10-10更新)一、Apk反编译得到Java源代码下载上述反编译工具包,打开apk2java目录下的dex2jar-0.0.9.9文件夹,内含apk反编译成java源码工具,以及源码查看工具。apk反编译工具dex2jar,是将apk中的classes.dex转化成jar文件源码查看工具jdgui,是一个反编译工具,可以直接查看反编译后的ja
阅读全文
posted @
2013-09-23 14:40
Rosepotato
阅读(383)
推荐(1)
android 自动调整屏幕分辨率
摘要:请看 http://blog.csdn.net/awp258/article/details/7593340
阅读全文
posted @
2013-08-14 16:38
Rosepotato
阅读(287)
推荐(0)