android
文章平均质量分 81
JoneRen
这个作者很懒,什么都没留下…
展开
-
JNI和NDK编程
Java JNI:Java Native Interface(Java本地接口),是为了方便Java调用C、C++D等本地代码所封装的一层接口。NDK是Android所提供的一个工具集合,通过NDK可以在Android中更加方便的通过JNI来访问本地代码,比如C/C++,NDK还提供了交叉编译器,开发人员只需简单修改mk文件就可以生成特定CPU平台的动态库。使用NDK的好处:1.提高代码的原创 2017-05-22 23:35:09 · 317 阅读 · 0 评论 -
序列化Serializable、Parcelable
1.SerializableSerializable是Java提供的一个序列化接口,它是一个空接口,为对象提供标准的序列化和反序列化的操作。使用方法简单,只需要提供一个类似下面的标示即可。private static final long serialVersionUID=6366644757585885L.简单的一个序列化例子:public class Data impleme原创 2017-06-06 11:35:42 · 450 阅读 · 0 评论 -
Android studio如何创建一个AIDL文件
1.创建一个工程,在java目录下的包内创建一个实现了Parcelable的类,比如Person。2.右键创建任意命名的AIDL文件,如Book.AIDL在main方法下自动生成一个aidl的文件夹,里边包含我们命名的.aidl文件,而且这里的包名和我们的java代码包名保持一致。3.这里的命名是可以任意修改的,这里我们修改为Person.aidl,和我原创 2017-06-06 17:59:30 · 2933 阅读 · 0 评论 -
CrashHandle捕获崩溃信息
程序的崩溃是不可避免的,我们有时需要手动捕捉这些崩溃信息,上传服务器。Android提供了扑捉crash的方法。在Thread类中,有一个方法setDefaultUncaughtExceptionHandler; /** * Set the default handler invoked when a thread abruptly terminates * due to原创 2017-05-22 15:23:53 · 614 阅读 · 0 评论 -
multidex解决方法数越界
Android单个dex文件所能包含的最大方法数是65536,这个包括Android FrameWork、依赖jar包以及应用本身的所有方法。当应用的方法数达到65536之后,编译出现问题。UNEXPECTED TOP-LEVEL EXCEPTION: java.lang.IllegalArgumentException: method ID not in [0, 0xffff]: 6原创 2017-05-22 15:28:59 · 400 阅读 · 0 评论 -
rippleDrawable 触摸反馈
在5.0以上设备上实现波纹效果,可以通过给View设置background实现。官方已经有两个已经实现的效果供我们选择:1.?android:attr/selectableItemBackground在5.0以下的设备上没有波纹效果,是普通的变色效果。波纹效果会被限制在View的大小之内。2.?android:attr/selectableItemBackgroundBorderles原创 2017-06-11 19:47:10 · 516 阅读 · 0 评论 -
Android版本更新
Android1.1 2008 年9月发布的Android第一版Android1.5 Cupcake (纸杯蛋糕) 2009年4月30日,主要的更新如下: 1、拍摄/播放影片,并支持上传到Youtube 2、支持立体声蓝牙耳机,同时改善自动配对性能 3、最新的采用WebKit技术的浏览器,支持复制/贴上和页面中搜索 4、GPS性能大大提高 5、提供屏幕原创 2017-06-11 20:31:17 · 544 阅读 · 0 评论 -
JVM、Dalvik、 ART三种虚拟机简单对比
Dalvik虚拟机存在于Android系统,JVM是java虚拟机,两者都是虚拟机。1. Dalvik 基于寄存器,而 JVM 基于栈。基于寄存器的虚拟机对于更大的程序来说,在它们编译的时候,花费的时间更短。 2.Dalvik执行.dex格式的字节码,而JVM执行.class格式的字节码。3.Dalvik 和 Java SDK的SDK不同。4.Dalvik 和 Java 运行环境...原创 2017-06-11 20:35:04 · 550 阅读 · 0 评论 -
曲线运动PathInterpolator /path
Material Design 中的动画利用曲线实现时间内插与空间移动模式。 利用 Android 5.0(API 级别 21)及更高版本,您可为动画定义定制时间曲线以及曲线运动模式。PathInterpolator 类别是一个基于贝塞尔曲线或 Path 对象的全新插入器。 此插入器在一个 1x1 的正方形内指定一个运动曲线,定位点位于 (0,0) 以及 (1,1),而控制点则使用构造函数参数原创 2017-06-15 10:13:01 · 2691 阅读 · 0 评论 -
矢量图片添加动画 AnimatedVectorDrawable
矢量图的好处:1、文件占用空间小,且矢量图形文件与分辨率和图像大小无关,只与图像的复杂程度有关,图像文件所占的存储空间较小。2、图像放大不失真,.即矢量图可以无级缩放,对图形进行缩放,旋转或变形操作时,图形不会产生锯齿效果。AnimatedVectorDrawable 类别可让您为矢量图片的属性添加动画。您通常可以在 3 个 XML 文件中定义添加动画的矢量图片:在 res/d原创 2017-06-15 10:25:34 · 629 阅读 · 0 评论 -
StateListAnimator视图状态改变动画
Material Design 中最基础的一条原则就是 'motion provides meaning',也就是当用户和你的 app 交互时应当提供合理的视觉反馈。标准做法是使用官方提供的 StateListDrawable 来为控件实现交互效果。StateListAnimator 是和 Material Design 一同在 API 21 引入的,可以用来方便的实现交互反馈的视觉效果,今天原创 2017-06-15 10:36:14 · 1139 阅读 · 0 评论 -
Transition(Activity切换过渡动画)
Material Design 应用中的操作行为转换透过通用元素之间的移动和转换提供不同状态之间的视觉连接。 您可为进入、退出转换以及操作行为之间的共享元素转换指定定制动画。活动过渡提供了两种过渡类型:1,输入(进入):进入一个活动的效果2,退出(退出):退出一个活动的效果而这每种类型又分为普通和共享元素的过渡。普通转型爆炸 explode:从场景的中心移入或移出原创 2017-06-15 11:03:58 · 1472 阅读 · 0 评论 -
BroadcastReceiver注册、发送、接收源码分析
BroadcastReceiver包括两方面,一是广播的注册过程,二是广播的发送和接收过程。首先要定义一个广播的接受者,只需要集成BroadcastReceiver,并重写它的onReceiver()方法就可以了,在该方法内不要做超过10ms的耗时工作。注册广播接受者有两种方式;一是在AndroidManifest文件中静态注册:二是在代码中动态注册,采用registerRecei原创 2017-05-19 20:00:03 · 1747 阅读 · 0 评论 -
Service进阶篇(bindService)
本篇是Service进阶篇(bindService),观看本篇文章,请务必先观看Service进阶篇(startService),本篇文章会在它分析的基础上,直接描述,会缺少一些细节。原创 2017-05-19 14:48:36 · 2599 阅读 · 1 评论 -
Service进阶篇(startService)
本篇是Service的进阶篇,为了防止Service源码分析篇幅太长,这里进一步分为Service进阶篇(startService)、Service进阶篇(bindService),本篇是Service进阶篇(startService)。原创 2017-05-19 09:54:57 · 519 阅读 · 0 评论 -
android View coordinate(坐标)
这盘文章是为了帮助自己梳理有关View体系中涉及到坐标信息的,有这方面困扰的可以来看一看,内容简单,设计内容如下:left、top、right、bottom,top,x , y , translationX , translationY,getScrollX,getScrollY,getX、getY、getRawX,getRawY,getLocationInWindow(location),getLocationOnScreen(location)原创 2017-05-04 12:04:00 · 1346 阅读 · 0 评论 -
ThreadPoolExector(线程池)
线程池ThreadPoolExecutor的优点:1.重用线程池的线程,可以避免因为线程的创建和销毁所带来的性能开销。2.可以控制线程池的线程最大并发数量,避免线程之间因为互相抢占资源而造成的阻塞。3.能够对线程进行简单的管理,并提供定时执行以及间隔执行等功能。首先简单分析一下ThreadPoolExecutor的构成参数:public ThreadPoolExecutor(i原创 2017-05-16 11:30:06 · 2149 阅读 · 0 评论 -
HandleThread
有一次面试问到,什么是HandleThread,它的使用场景是什么,当时直接蒙圈了,所以花点时间简单整理一下。原创 2017-05-16 20:10:42 · 809 阅读 · 0 评论 -
Service、IntentService下载Apk
文章本身是为了验证一道面试题:我要用服务下载apk,是用IntentService,还是Service好?为什么?同时也是回了回应我的文章:IntentService中所涉及的问题。文章的代码是从网络上找到,做了一些简单的优化和验证,需要的可以直接使用。原创 2017-05-16 22:44:49 · 678 阅读 · 0 评论 -
IntentService源码分析
IntentService继承了Service并且是一个抽象类,需要创建它的子类才能使用IntentService。它相对Service来说,是一个特殊的Service,它的内部使用HandleThread来执行服务,任务执行完,IntentService会自动退出。相对于Thread来说,它是一个服务,它的优先级高于线程,不容易被系统回收。一个面试问题:我要用服务下载apk,是用Inte原创 2017-05-16 23:57:32 · 384 阅读 · 0 评论 -
android进程、线程的优先级
有一个面试问题:IntentService的优先级比单纯的线程高,它不容易被系统杀死,可以执行高优先级的后台任务。为什么?它的背后有那些逻辑呢?IntentService的具体内容可以参照我的另外一篇文章:IntentService的源码分析,IntentService也是Service,后续就把IntentService改为Service了,更有代表性。表面看是涉及到两个知识点的问题,一是a原创 2017-05-17 12:03:32 · 763 阅读 · 0 评论 -
android View
文章简单讲了Activity、PhoneWindow、DecorView、ViewGroup、View之间的联系,结合部分源码,着重讲解了View绘制的三个方法:onMeasure(...)、onLayout(...)、onDraw(...),希望对大家有所帮助。原创 2017-05-09 07:45:07 · 342 阅读 · 0 评论 -
Service基础篇
Service我分成两篇文章来讲解,一篇是Service的基础篇,主要谈Service的基本使用;另一篇是Service的进阶篇,从源码的角度分析。本篇是基础篇。原创 2017-05-17 16:44:03 · 268 阅读 · 0 评论 -
android 性能、内存优化
借鉴了很多别人的知识,也结合了一些自己在实际项目中遇到的内存溢出、OOM问题,罗列了常见的容易造成内存溢出、OOM的问题所在,也有一些建议,希望能帮助大家加深这块内容的理解。原创 2017-05-09 15:41:54 · 279 阅读 · 0 评论 -
android animation
文章比较系统的介绍了Android 动画,是比较基础的内容,涉及到了AlphaAnimation、RotateAnimation、TranslateAnimation、LayoutAnimation、Interpolator、ValueAnimator 、ObjectAnimator 、PropertyValuesHolder、ViewPropertyAnimator、LayoutTransition、Keyframes、Rotate3dAnimation,以及一些自定义的动画,具体的内容可以下载完整的de原创 2017-04-27 08:24:42 · 500 阅读 · 0 评论 -
Activity源码分析
Activity启动过程是复杂的,可以直接跳过从ActivityStarter----->ActivityStack------------>ActivityStackSuperVisor,直接从ActivityStackSuperVisor的realStartActivtyLocked方法阅读。原创 2017-05-18 19:00:16 · 514 阅读 · 0 评论 -
压缩代码和资源
要尽可能减小 APK 文件,您应该启用压缩来移除发布构建中未使用的代码和资源。此页面介绍如何执行该操作,以及如何指定要在构建时保留或舍弃的代码和资源。代码压缩通过 ProGuard 提供,ProGuard 会检测和移除封装应用中未使用的类、字段、方法和属性,包括自带代码库中的未使用项(这使其成为以变通方式解决 64k 引用限制的有用工具)。ProGuard 还可优化字节码,移除未使用的代码指令...转载 2018-08-07 12:29:18 · 509 阅读 · 0 评论