android系统
chun_soft
再忙也不要忘记学习!
展开
-
Android 事件拦截和分发机制分析
当android系统捕获到用户的各种输入事件后,android提供了一整套完整的事件传递、处理机制,来帮助开发者完成准确的事件分配与处理。触摸事件就是捕获屏幕后的产生的事件。Android为触摸事件封装了一个类—MotionEvent。 MotionEvent典型的事件类型有以下几种: ACTION_DOWN—手指刚接触屏幕; ACTION_UP—手指从屏幕上松开的一瞬间; ACTION_M原创 2017-01-05 00:15:41 · 875 阅读 · 0 评论 -
通过注解和反射编写一个android注解框架
1、概述 你可以 随便找个人依靠 那么寒冬后 炎夏前 谁会给你春一样的爱恋 日落后 最美的 时光已溜走——《三十岁的女人》上篇文章《java反射机制和自定义注解原理分析和实例》已经介绍了java的反射机制和自定义注解的基本原理和简单实例。本篇文章模仿android的框架xUtils的ViewUtils模块,完全注解方式就可以进行UI绑定和事件绑定,无需findViewById和setClick原创 2017-03-03 15:20:02 · 812 阅读 · 0 评论 -
Android性能优化典范(第一季)
0、概述 谷歌从2015年开始,Google发布了关于Android性能优化典范的专题,一共16个短视频,每个3-5分钟,帮助开发者创建更快更优秀的Android App。课程专题不仅仅介绍了Android系统中有关性能问题的底层工作原理,同时也介绍了如何通过工具来找出性能问题以及提升性能的建议。主要从三个方面展开,Android的渲染机制,内存与GC,电量优化。下面是对这些问题和建议的转载 2017-02-03 23:47:54 · 615 阅读 · 0 评论 -
Android 动画完全解析
1、概述Android的动画分为三种,View Animation(视图动画)、 Drawable Animation(帧动画)、Property Animation(属性动画)。其实Drawable Animation(帧动画)也属于View Animation(视图动画)的一种,只不过它和View动画的表现形式不同。View动画通过对场景里的图像不断做图像变换(平移、缩放、旋转、透明度)从而产生转载 2017-02-24 22:33:21 · 428 阅读 · 0 评论 -
Android中的asserts和res/raw资源目录
1、assets目录 assets目录下称为原生文件,无法通过R资源清单类访问,这类文件在被打包成apk文件时是不会进行压缩的;(1)使用方法AssetManager assets = this.getResources().getAssets();((TextView)findViewById(R.id.txAssets)).setText( readStream(assets.o原创 2017-03-08 00:59:06 · 4509 阅读 · 0 评论 -
Android的Handler深入解析
1、概述前面写过一篇文章《Android中的消息机制》简单分析了异步消息机制,本文将深入解读Handler的原理。2、基本概念单线程模型中的Message、Handler、Message Queue、Looper之间的关系:Handler获取当前线程的Looper对象,Looper用来从存放Message的MessageQueue中取出Message,再由Handler进行Message的分发和原创 2017-03-04 19:38:18 · 2185 阅读 · 0 评论 -
Android中的Fragment回退栈
1、概述我们知道Activity可以通过栈的方式管理Activity(standard、singleTop、singleTask、singleInstance),那么Fragment怎么实现回退栈,官方提供了addToBackStack(String name)来实现fragment的回退栈,但是效果太差。而replace方法替换Fragment,会造成Fragment的不断销毁和创建,影响效率。本原创 2017-03-04 20:59:00 · 1417 阅读 · 0 评论 -
Android中Intent传递的四种数据类型以及传递方法
1、Bundle Bundle是将数据传递到另一个上下文中或保存,或者回复自己状态的数据存储方式,数据不是持久化状态。(1)简单用法//传递参数Intent intentSimple = new Intent(); intentSimple.setClass(MainActivity.this,Activity2.class); Bundle bundleSimple = new Bu原创 2017-03-08 14:43:22 · 5164 阅读 · 0 评论 -
Android Studio v2.3 进行NDK配置和使用
1、概述以前在eclipse上玩过NDK,现在想在Android Studio试试NDK,看了网上的一些教程,大多数比较老,步骤过时。本文根据最新android Studio版本进行NDK的配置,并进行基本使用。2、环境配置(1)安装NDK从菜单栏中选择Tools > Android > SDK Manager。点击SDK Tools选项卡。勾选LLDB,CMake和NDK。1)The An原创 2017-03-10 15:06:33 · 1647 阅读 · 1 评论 -
Android中Build类以及@SuppressLint("NewApi")和@TargetApi()区别
1、类结构Object类的子类。2、类描述 Information about the current build, extracted from system properties.从系统属性中提取设备硬件和版本信息。3、内部类3.1 Build.VERSION Various version strings.各种版本字符串。// 当前开发代号 Build.VERSION.CODE原创 2017-03-28 14:37:54 · 1173 阅读 · 0 评论 -
Android中View的滑动机制分析
1、View基础知识1.1 View介绍 View是Android中所有控件的基类,是一种界面层控件的抽象,它代表了一个控件。ViewGroup,控件组,内部包含了多个控件,即一组View。ViewGroup继承View,意味着View可以是单个控件,也可以是由多个控件组成的一组控件,形成了View的树结构。举例说明View和ViewGroup的关系。Button是个View,LinearLa原创 2017-04-07 15:24:08 · 581 阅读 · 0 评论 -
Android中的IPC机制
1、概述 IPC(Inter-Process Communication),含义为进程间通信或者跨进程通信,是指两个进程之间进行数据交换的过程。2、Android中的IPC场景(1)单应用 一个应用因为某种原因自身需要采用多进程模式来实现,至于原因,比如,有些模块因为特殊原因需要运行在单的的进程中,或者为增大一个应用可使用的内存所以需要通过多进程来获取多份内存空间。Android对单个应用使原创 2017-03-16 18:16:13 · 660 阅读 · 0 评论 -
Android中的ids.xml的作用
1、概述ids.xml:为应用的相关资源提供唯一的资源id。id是为了获得xml中的对象需要的参数,也就是 Object = findViewById(R.id.id_name); 中的id_name。2.用法2.1 xml中使用这些值可以在代码中用android.R.id引用到。若在ids.xml中定义id,则在layout中可如下定义@id/id_name;否则为@+id/id_name。2原创 2017-04-03 16:18:37 · 4606 阅读 · 0 评论 -
Android适配—百分比布局库(android-percent-support-lib-sample)
1、概述 最近在总结android屏幕适配,发现LinearLayout有android:layout_weight这个属性,可以控制各个内部控件的占比。如果任何布局引入百分比形式的布局方式那么适配效果会很不错,也简单。 通过查找发现,谷歌官方在2年前就发布了百分比布局库,android-percent-support-lib-sample。GitHub链接: https:原创 2017-02-03 00:11:05 · 2025 阅读 · 0 评论 -
Android屏幕适配解决方案
1、概述 Android碎片化问题是每个开发者心中的噩梦,本文就Android适配问题进行了全面的总结。首先看下谷歌官方2016 年 8 月 1 日发布的报告:Android 平台版本的相对数量设备的相关数据:可以看出4.1版本及以上占有量达到96%,所以适配优先考虑4.1以上的版本适配问题。特定屏幕配置的设备的数据,屏幕配置由屏幕尺寸和密度定义:从统计数据可以看出,hdpi、xhdpi和xx原创 2017-01-31 22:43:00 · 1487 阅读 · 1 评论 -
Activity的四种启动模式和应用场景
1.standard(标准启动模式) 这是Activity的标准启动模式,也是Activity的默认启动模式。在这个模式下启动的Activity可以被多次实例化,即在同一个任务栈中可以存在多个Activity实例,每个实例都会处理一个Intent对象。如果ActivityA的启动模式为standard,并且有一个ActivityA被启动,在该ActivityA中调用startActivi原创 2016-12-29 20:05:27 · 902 阅读 · 0 评论 -
Android Service完全解析(Service,IntentService)
1.概述 Service是Android中实现程序后台运行的解决方案,适合去执行不需要和用户交互还要求长期运行的任务,注意 ,Service默认并不会运行在子线程中,它也不运行在一个独立线程中,它同样执行在UI线程中,因此不要在Service中执行耗时的操作,除非在Service中创建子线程来完成耗时操作。2.普通Service(1)startService() A start原创 2016-12-29 21:58:56 · 623 阅读 · 0 评论 -
Android中的消息机制
1.概述 Android应用启动时,会默认有一个主线程(UI线程),在这个线程中会关联一个消息队列(MessageQueue),所有的操作都会被封装成消息队列然后交给主线程处理。为了保证主线程不会退出,会将消息队列的操作放在一个死循环中,程序就相当于一直执行死循环,每循环一次,从其内部的消息队列中取出一个消息,然后回调相应的消息处理函数(handlerMessage),执行完成一个消息后则继续循原创 2017-01-06 21:51:40 · 829 阅读 · 0 评论 -
Java多线程
1.进程和线程(1)进程 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.一个程序至少有一个进程。(2)线程 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享原创 2017-01-06 23:30:10 · 513 阅读 · 0 评论 -
Android AsyncTask的实现基本原理
1.概述 如果通过Thread执行耗时操作,那么操作完成之后,我们可能需要更新UI,通常通过Handler的投递,更新。这种方式控制精细,在多个任务执行时,代码臃肿。Android1.5之后提供了AsyncTask,它使创建异步线程变得更加简单,它更重量级,更易于使用。public abstract class AsyncTask<Params, Progress, Result> {}三种泛型类原创 2017-01-07 01:02:10 · 516 阅读 · 0 评论 -
Android性能优化典范(第二季)
0、概述Android性能优化典范第2季的课程,一共20个短视频,包括的内容大致有:电量优化,网络优化,Wear上如何做优化,使用对象池来提高效率,LRU Cache,Bitmap的缩放,缓存,重用,PNG压缩,自定义View的性能,提升设置alpha之后View的渲染性能,以及Lint,StictMode等等工具的使用技巧。 下面是对这些课程的总结摘要,认知有限,理解偏差的地方请多多指教!1、Ba转载 2017-02-06 16:36:21 · 474 阅读 · 0 评论 -
Android中的MVP架构分解和实现
1、概述传统的Android开发架构一般是MVC模式,Model:业务逻辑和实体模型View:对应于布局文件Controllor:对应于Activity单独从逻辑看起来非常好,与我们做Web开发时,开发模式类似,但在实际开发中,View对应于布局文件,实际上关于该布局文件中的数据绑定的操作,事件处理的代码都在Activity中,Activity既像View又像Controller(MVVP架原创 2017-02-07 17:23:31 · 2477 阅读 · 5 评论 -
Android中网络请求—HttpClient、HttpURLConnection
1.概述Android中提供了两种执行网络请求的方式,一种是使用Apache的HttpClient,另一种则是java的HttpURLConnection。2.HttpClientHttpClient是一个完善的客户端,提供了对HTTP协议的全面支持,可以使用HttpClient的对象来执行HTTP GET和HTTP POST调用。由于在android6.0中,HttpClient库已经被移除,因此原创 2017-01-12 00:03:17 · 808 阅读 · 0 评论 -
Android SQLite详解
1、SQLite介绍SQLite是一个遵守ACID(即原子性、一致性、隔离性和持久性)的关系数据库管理系统,它包含在一个很小的C程序库中。与许多其他数据库管理系统不同,SQLite不是一个C/S结构的数据库引擎,而是被集成在用户程序中。应用程序通过编程语言内的直接API调用来使用SQLite的功能,这在减少数据库访问延迟上有积极作用,因为,在一个单一进程中的函数调用比跨进程通信更有效率。它采用了在写原创 2017-02-17 13:09:42 · 1913 阅读 · 0 评论 -
Android中SQLite基本用法
1、概述上篇文章已经介绍了SQLite的基本体系结构和详细的SQL语句。本文将介绍在Android中SQLite的基本用法,并给出示例源码。Android自带的数据库系统就是SQLite,而由于SQLite是C和C++实现,因此Android在Framework层封装了一层java接口,使得开发人员能够更方便地操作数据库。主要的类型为SQLiteOpenHelper、SQLiteDatabase以及原创 2017-02-17 16:41:37 · 938 阅读 · 0 评论 -
Android内存泄漏完整解决方案
1、概述Android开发中经常出现内存泄漏问题,本文将从发现问题,确定问题,分析问题,解决问题四个方面解决内存泄漏问题。内存泄漏:java是有垃圾回收机制的,JVM会派出一些回收线程不定时地回收那些不再需要的内存空间,回收的不是对象本身,而是对象占据的内存空间。java凭引用来和对象进行关联,通过引用来操作对象。如果一个对象没有与任何引用关联,那么这个对象也就不太可能被使用到了,回收器便是把无任何原创 2017-02-22 12:41:41 · 998 阅读 · 0 评论 -
Android热修复方案—AndFix
1、概述 AndFix is a library that offer hot-fix for Android App.AndFix是支付宝开源的一套热修复框架,使用简单,成功率高。GitHub:https://github.com/alibaba/AndFix(1)AndFix是在线修复错误的解决方案,而不是重新分发Android应用程序。它作为Android库分发。(2)AndFix是“A原创 2017-02-14 21:54:17 · 556 阅读 · 0 评论 -
Android中的三级缓存解析与实战
1、概述由于Bitmap的特殊性以及Android对单个进程应用只分配16M的内存,这导致加载Bitmap的时候很容易出现内存泄漏。为了解决这个问题,引入了缓存策略。缓存策略是一个通用的思想,可以用在很多场景中,在实际开发中,经常用Bitmap做缓存。通过缓存策略,我们不需要每次从网络上请求图片或者从存储设备中加载图片,这样就极大的提高了图片的加载效率以及产品的用户体验。目前常用的缓存策略,LruC原创 2017-04-06 00:21:16 · 1021 阅读 · 0 评论