- 博客(420)
- 资源 (18)
- 收藏
- 关注

原创 Android应用中使用运行时注解
其实非常简单,直接上代码:本文主要是替代传统的findViewById()的功能,就是在我们Activity中不需要再使用findViewById()去给View赋值了,通过注解在运行阶段自动赋值。以及setOnClickListener()也是一样的原理。使用注解和反射技术。1. 定义自己的annotation注解。 定义findViewbyId这个功能的注解pa
2016-04-22 11:36:38
2162

转载 控制反转与依赖注入(IOC和DI)
1.控制反转(Inversion of Control)与依赖注入(Dependency Injection)控制反转即IoC (Inversion of Control),它把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。所谓的“控制反转”概念就是对组件对象控制权的转移,从程序代码本身转移到了外部容器。IoC是一个很大的概念,可以用不同的方式来实现。
2016-04-21 20:15:06
2023

转载 反射、注解与依赖注入总结
现在在我们构建自己或公司的项目中,或多或少都会依赖几个流行比较屌的第三方库,比如:Butter Knife、Retrofit、Dagger 2等,如果你没用过,那你需要找时间补一下啦;有时在使用后我们会好奇他们到底是怎么做到这种简洁、高效、松耦合等诸多优点的,当然这里我不探讨它们具体怎么实现的,而关心的是它们都用到同样的技术反射和注解,并实现的依赖注入。如果你好奇这些库具体是怎么实现的,或
2016-04-21 19:34:23
2333

转载 java虚拟机Class类文件的结构
平台无关性 Java是与平台无关的语言,这得益于Java源代码编译后生成的存储字节码的文件,即Class文件,以及Java虚拟机的实现。不仅使用Java编译器可以把Java代码编译成存储字节码的Class文件,使用JRuby等其他语言的编译器也可以把程序代码编译成Class文件,虚拟机并不关心Class的来源是什么语言,只要它符合一定的结构,就可以在Java中运行。Java语言中的各
2016-04-17 10:23:24
873

原创 JVM虚拟机内存模型
java虚拟机运行时内存主要包括:程序计数器、虚拟机栈、本地方法栈、java堆、方法区(包含运行时方法区)以及直接内存几个部分。下面分别介绍几个部分:1. 程序计数器(Program Counter Register) ,很小的一块内存空间,当前线程执行的字节码的行号指示器,执行命令的指令指针。字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支
2016-04-14 15:04:29
4180

转载 android 应用动态加载机制2--资源加载机制和Activity生命周期管理
前言为了更好地阅读本文,你需要先阅读Android apk动态加载机制的研究这篇文章,在此文中,博主分析了Android中apk的动态加载机制,并在文章的最后指出需要解决的两个复杂问题:资源的访问和activity生命周期的管理,而本文将会分析这两个复杂问题的解决方法。需要说明的一点是,我们不可能调起任何一个未安装的apk,这在技术上是无法实现的,我们调起的apk必须受某种规范的约束,只有
2016-04-14 10:43:07
800

转载 android 应用动态加载机制1
背景问题是这样的:我们知道,apk必须安装才能运行,如果不安装要是也能运行该多好啊,事实上,这不是完全不可能的,尽管它比较难实现。在理论层面上,我们可以通过一个宿主程序来运行一些未安装的apk,当然,实践层面上也能实现,不过这对未安装的apk有要求。我们的想法是这样的,首先要明白apk未安装是不能被直接调起来的,但是我们可以采用一个程序(称之为宿主程序)去动态加载apk文件并将其放在自己的
2016-04-14 10:42:04
805

转载 Java中的反射基础知识
1. 了解 Java 中的反射1.1 什么是 Java 的反射Java 反射是可以让我们在运行时获取类的函数、属性、父类、接口等 Class 内部信息的机制。通过反射还可以让我们在运行期实例化对象,调用方法,通过调用 get/set 方法获取变量的值,即使方法或属性是私有的的也可以通过反射的形式调用,这种“看透 class”的能力被称为内省,这种能力在框架开发中尤为重要。 有些情况
2016-03-28 22:00:33
1778

原创 代码汇编后的区段
一个程序经过汇编之后生成:数据段、代码段、栈区、堆区。BSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。数据段:数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。代码
2016-02-16 11:17:27
1837

原创 android studio adb连接不上手机 ADB server didn't ACK
问题描述:在eclipse的Logcat出现错误[2014-01-08 14:00:07 - adb] ADB server didn't ACK[2014-01-08 14:00:07 - adb] * failed to start daemon *[2014-01-08 14:07:24 - adb] ADB server didn't ACK[2014-01-08 14:07
2015-02-11 16:12:18
12589

转载 android的启动简要分析
1. Linux内核启动l Linux内核启动一般由外部的bootloader引导,也可以在内核头部嵌入一个loader,这部分同硬件紧密相关,一般由汇编写。 l 内核zImage解压缩。head.S首先初始化自解压相关的如内存等环境,接下来调用decompress_kernel进行解压(./arch/arm/boot/compressed/misc.c) l 解压完
2015-01-22 21:06:36
1320

转载 Android应用程序窗口(Activity)的窗口对象(Window) 的创建过程分析
每一个Activity组件都有一个关联的ContextImpl对象,同时,它还关联有一个Window对象,用来描述一个具体的应用程序窗口。由此又可知,Activity只不过是一个高度抽象的UI组件,它的具体UI实现其实是由其它的一系列对象来实现的。在本文中,我们就将详细分析Android应用程序窗口对象的创建过程。为了方便接下来描述类型为PhoneWindow的应用程序窗口的创建过程,我们
2015-01-22 10:36:53
1429

转载 Android应用程序窗口设计框架四
performLayoutframeworks\base\core\java\android\view\ViewRootImpl.java?123456789101112131415privatevoid p
2015-01-21 10:27:40
1608

转载 Android应用程序窗口设计框架三
performTraversals函数相当复杂,其主要实现以下几个重要步骤:1.执行窗口测量;2.执行窗口注册;3.执行窗口布局;4.执行窗口绘图;?1234567891011121314151617
2015-01-21 10:26:46
1290

转载 Android应用程序窗口设计框架二
handleResumeActivityperformLaunchActivity函数完成了两件事:1) Activity窗口对象的创建,通过attach函数来完成;2) Activity视图对象的创建,通过setContentView函数来完成;这些准备工作完成后,就可以显示该Activity了,应用程序进程通过调用handleResumeActivity函数来启
2015-01-21 10:24:15
1679

转载 Android应用程序窗口设计框架 一
在Android系统中,一个Activity对应一个应用程序窗口,任何一个Activity的启动都是由AMS服务和应用程序进程相互配合来完成的。AMS服务统一调度系统中所有进程的Activity启动,而每个Activity的启动过程则由其所属进程来完成。AMS服务通过realStartActivityLocked函数来通知应用程序进程启动某个Activity:frameworks\base
2015-01-21 10:20:54
1651

转载 源码解析StartActivity的过程
前言Activity是Android中一个很重要的概念,堪称四大组件之首,关于Activity有很多内容,比如生命周期和启动Flags,这二者想要说清楚,恐怕又要写两篇长文,更何况分析它们的源码呢。不过本文的侧重点不是它们,我要介绍的是一个Activity典型的启动过程,本文会从源码的角度对其进行分析。我们知道,当startActivity被调用的时候,可以启动一个Activity,但是你
2015-01-20 21:52:50
2693

转载 Android手机开发总结
导读:对于Android开发者来说,成系列的技术文章对他们的技术成长帮助最大。如下是我们向您强烈推荐的主题为Android开发的第一个系列文章。《Android核心分析》整理如下:1. 方法论探讨之设计意图为什么要研究Android,是因为它够庞大,它够复杂,他激起了我作为一个程序员的内心的渴望,渴望理解这种复杂性。我研究的对象是作为手机开发平台的Android软件系统部分
2015-01-20 14:08:21
12154
1

转载 图解Android - Zygote, System Server 启动分析
Init 是所有Linux程序的起点,而Zygote于Android,正如它的英文意思,是所有java程序的'孵化池'(玩过星际虫族的兄弟都晓得的)。用ps 输出可以看到>adb shell ps | grep -E 'init|926' root 1 0 656 372 00000000 0805d546 S /init root 9
2015-01-20 09:43:23
1551

转载 Activity的启动和创建
最近学习Android相关知识,感觉仅仅了解Activity几个生命周期函数基本上没有任何意义的;于是想深入了解一下Activity到底是怎么一回事怎么运行来的;里面的东东真是叫个庞大;现在只能简单的了解其框架性的概念和流程;一 Activity概念 Android的核心不是Application而是Activity,至少在我们开发的时候是这样的; Activity就是被用
2015-01-18 20:59:56
954

原创 Android资源访问机制
Android经常使用getResources()方法获取app的一些资源,getResource()方法是Context接口的方法,具体是有ContextImpl类实现的,Activity、Service、Application都是继承自Context接口。 资源获取的方式是context.getResources,而真正的实现位于ContextImpl中的getResourc
2015-01-13 17:22:48
4344

转载 onSaveInstanceState执行时机
当某个activity变得“容易”被系统销毁时,该activity的onSaveInstanceState就会被执行,除非该activity是被用户主动销毁的,例如当用户按BACK键的时候。 注意上面的双引号,何为“容易”?言下之意就是该activity还没有被销毁,而仅仅是一种可能性。这种可能性有哪些?通过重写一个activity的所有生命周期的onXXX方法,包括onSaveInstanc
2015-01-09 11:58:57
2940

转载 android build.prop文件详解
用RE进入/system/挂载读写(前提是系统已经被ROOT过), 找到build.prop复制到/sdcarrd进行修改比较保险.也可以挂载读写后,直接选择用文本编辑器打开,进行编辑.乱改有风险,修改需谨慎.1.# begin build properties2.# autogenerated by buildinfo.sh #以下内容由脚本在编译时自动产生3.ro.buil
2014-12-24 14:54:42
4419

转载 Android的各种Drawable讲解
Android把可绘制的对象抽象为Drawable,不同的图形图像资源就代表着不同的drawable类型。Android FrameWork提供了一些具体的Drawable实现,通常在代码中都不会直接接触Drawable的实现类。 在实际的开发过程中,会把使用到的资源都放置在res/drawable目录,剩下的工作交给Android SDK 就行了,当需要使用图片
2014-12-24 09:53:22
22703
1

转载 Android硬件加速
从Android 3.0开始,Android的2D渲染管线可以更好的支持硬件加速。硬件加速使用GPU进行View上的绘制操作。硬件加速可以在一下四个级别开启或关闭:ApplicationActivityWindowViewApplication级别往您的应用程序AndroidManifest.xml文件为application标签添加如下的属性即可为整个应用程序开启
2014-12-17 21:09:11
2902

转载 获取ActionBar的高度
一、屏幕高度和宽度获取方法[java] view plaincopyint screenWidth,screenHeight; WindowManager windowManager = getWindowManager(); Display display = windowManager.getDefaultDisplay();
2014-12-17 09:45:30
4568

转载 WindowManager.LayoutParams详解
WindowManager.LayoutParams 是 WindowManager 接口的嵌套类;继承于 ViewGroup.LayoutParams 。 它的内容十分丰富。其实WindowManager.java的主要内容就是由这个类定义构成。下面来分析一下这个类: 定义public static class WindowManager.LayoutParam
2014-11-27 18:46:52
3747

转载 Android 4.0的图形硬件加速及绘制技巧
从Android 3.0开始,Android 2D的绘制流程就设计为能够更好地支持硬件加速。使用GPU的View在Canvas上进行画的操作时都会使用硬件加速。在最新的Android版本里,图形硬件加速及绘制技巧得到了更好的提升,51CTO特约了最牛网站长作为本站专栏作者,为各位网友撰写Android 4.0开发相关文章。Android 4.01.Android 4.0
2014-11-25 21:29:09
993

转载 Activity切换的动画
app中Activity之间跳转方式太单调有没有。。。想改变一下?那就自己写呗!!!!!!实现Acitvity之间跳转的方式有两种。一、在AndroidManifest中定义。1、现在res/values/styles.xml中加上一个style,如下?1234<style name="
2014-11-25 20:11:58
1393

转载 webview学习记录
webview学习记录 楼主 webview学习记录.rar (44.56 KB, 下载次数: 345) 工作中用到了webview 下面把webview相关的知识进行一下总结:首先要在manifest.main文件中创建一个webview,然后再activity中定义这个webview然后进行一下相
2014-11-17 20:20:08
1079

转载 HashMap循环遍历方式及其性能对比 主要介绍HashMap的四种循环遍历方式,各种方式的性能测试对比,根据HashMap的源码实现分析性能结果,总结结论。
1. Map的四种遍历方式下面只是简单介绍各种遍历示例(以HashMap为例),各自优劣会在本文后面进行分析给出结论。(1) for each map.entrySet()Java12345MapString, String> map = new HashMapString, String>();for (EntryString, Str
2014-11-10 15:39:10
1359

转载 android 获得一个应用程序的启动次数,运行时间等信息
通过com.android.internal.os.PkgUsageStats这个类可以得到一个应用程序的启动次数,运行时间等信息,功能很强大。但是google并没有将这个类作为API接口提供给开发者,如果在android源码下开发,可以通过以下代码来使用这个类:import com.android.internal.app.IUsageStats;import com.android
2014-11-05 09:33:51
5158

转载 java线程安全总结
最近想将java基础的一些东西都整理整理,写下来,这是对知识的总结,也是一种乐趣。已经拟好了提纲,大概分为这几个主题: java线程安全,java垃圾收集,java并发包详细介绍,java profile和jvm性能调优 。慢慢写吧。本人jameswxx原创文章,转载请注明出处,我费了很多心血,多谢了。关于java线程安全,网上有很多资料,我只想从自己的角度总结对这方面的考虑,有时候写东西是很痛苦
2014-04-01 20:58:44
993

转载 android:configChanges属性
对android:configChanges属性,一般认为有以下几点:1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次2、设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次3、设
2014-04-01 15:09:18
1228

转载 Activity的生命周期
大家好,今天给大家详解一下Android中Activity的生命周期,我在前面也曾经讲过这方面的内容,但是像网上大多数文章一样,基本都是翻译Android API,过于笼统,相信大家看了,会有一点点的帮助 ,但是还不能完全吃透,所以我今天特意在重新总结一下.首先看一下Android api中所提供的Activity生命周期图(不明白的,可以看完整篇文章,在回头看一下这个图,你会明白的):
2014-04-01 14:10:47
3229

原创 android Activity的Task Affinity lanchMode
1、Activity和Tasktask就好像是能包含很多activity的栈。 默认情况下,一个activity启动另外一个activity时,两个activity是放在同一个task栈中的,第二个activity压入第一个activity所在的task栈。当用户按下返回键时,第二个activity从栈中弹出,第一个activity又在当前屏幕显示。这样,从用户角度来看,这两个activi
2014-04-01 12:40:05
999

原创 两种实现大图内容平移效果的方法
第一种方法是通过Scrooler和View的computeScroll()以及iew的scrollTo()来实现,不过该内容要在布局中包在一个layout,在layout实现内容view的移动,当然图片的宽度要定义比较宽第二种方法就是自己一针一针去绘制图片的部分矩形范围。
2014-03-10 15:01:47
2489

转载 View的draw onDraw dispatchDraw顺序
绘制VIew本身的内容,通过调用View.onDraw(canvas)函数实现绘制自己的孩子通过dispatchDraw(canvas)实现 View组件的绘制会调用draw(Canvas canvas)方法,draw过程中主要是先画Drawable背景,对 drawable调用setBounds()然后是draw(Canvas c)方法.有点注意的是背景drawa
2014-03-04 14:56:32
2247

转载 OnScrollListener回调分析
OnScrollListener回调分析如果adapter中的数据量很大的时候,在加载listview时会出现卡顿的现象。这是会让用户抓狂!最好的解决办法就是先加载一定数量的数据,然后在最下方提示正在加载! 动态加载就是把放入adapter中的数据分好几次加载。在用户拖动listview时再加载一定的数据,和sina微博的客户端类似。 给listview添加OnScrollList
2014-03-04 14:19:18
1165

原创 window环境下搭建SVN服务器
第一步:准备工具:1、SVN服务端工具(window版):VisualSVN-Server-2.1.11.msi,下载地址:http://download.youkuaiyun.com/detail/duancanmeng/43511162、SVN客户端工具:TortoiseSVN-1.6.3.16613-win32-svn-1.6.3.msi,下载地址:http://download.csd
2014-02-13 12:54:57
26387
Android中非常好图片缓存ImageCache
2013-09-03
Android自定义底部菜单
2013-01-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人