Android
_呆若木鸡
这个作者很懒,什么都没留下…
展开
-
Android四大组件之Activity
activity(界面),broadcast receiver(广播接受者),service(服务),content provider(内容提供者)称为Android的四大组件,本文先介绍activity组件 一、简介 1.activity 用户接口程序,可以通俗的理解为界面,用来和用户进行交互的 首先要了解一下activity的声明周期,下面一张图可以很清晰原创 2015-11-04 22:06:46 · 562 阅读 · 3 评论 -
Bitmap高效加载图片
一、什么是Bitmap Bitmap在Android中指一张图,格式不定。BitmapFactory提供了四类方法:decodeFile.decodeResource decodeStream和decodeByteArray,分别支持从文件,资源,输入流以及字节数组加载出一个bitmap对象, 其中decodeFile和decodeResource间接调用了decodeStream原创 2016-07-09 18:28:22 · 1632 阅读 · 7 评论 -
JNI入门
一、什么是JNI? Java Native Interface java本地接口 提供了java与其他语言的通信接口,主要是Android中的c和c++,方便调用底层的一些功能强大的方法 一句话总结就是,java代码调用c和c++代码。 二、为什么使用JNI? 1.效率 java代码跨平台,虚拟机解释执行,不能执行操作硬件,虽然现在有了art模式原创 2016-07-30 11:12:53 · 373 阅读 · 6 评论 -
as中jni调用姿势(实战)
一、背景 最近项目中网络请求用到了jni调用c++代码来实现加密的功能,做的过程中踩了一些坑,特此祭奠一下 二、过程 与eclipse中jni略有不同,as中需要在本地和gradle中做一下自己的配置 1.在项目gradle.properties目录中加入Android.useDeprecatedNdk=true原创 2016-12-30 00:04:25 · 1292 阅读 · 6 评论 -
线程及消息
一、背景 Android中截面的更新必须要在UI线程中进行,但是向轮询器和网络请求这些比较耗时的操作如果放在主线程中执行会造成截面的卡顿,用户体验不友好,这时我们可以放在子线程中去执行这些耗时的操作,然后在通过消息传递的机制把消息传到主线程中去执行更新UI的操作 谷歌现阶段提供了Handler和线程池来实现这些操作,而且目前来说已经有很多基于这些已经封装好的框架原创 2017-01-07 11:33:33 · 803 阅读 · 4 评论 -
JNI&反射?
一、简介JNI怎么会和反射联系到一块?在对反射和JNI都还懵懵懂懂的时候,确实不知道怎么会把这两个东西联系到一块,随着对JNI和反射了解的深入越来与发现两者的相似之处,也可以说反射的原理就是JNI的调用.反射一般用在想要调用java中一些类私有的方法或不对外开放的类的方法时,深入想想为什么通过反射可以拿到这些私有的方法,java代码是跨平台的,实现这个的机制不可缺少的额就是jvm虚拟机,而原创 2016-12-31 15:05:01 · 2696 阅读 · 2 评论 -
MVP模式
一、背景 相信大家对于mvc这种开发模式都不陌生,无论是java开发,php还是Android都很常用,后来针对于Android网上又出来了一种mvp模式,这又是什么鬼?都知道mvp是从mvc进化来的,而且让model和view解耦,具体他是怎么做的还是值得去研究一下的,下面说一说自己对于mvp模式的理解二、比较 什么是mvc? model:实体层原创 2017-01-16 23:18:46 · 796 阅读 · 7 评论 -
百度地图key值问题小记
背景: 前段时间没事玩了玩百度地图,玩的时候有个小问题,直接把把应用运行在手机上,按照百度地图开发者文档中获取密钥可以正常显示地图,但是在打包之后放在自己的手机上就只能显示网格了 当时没在意这个问题,以为只是网络的原因,就没深究,然后前两天,公司项目需要接入地图的功能,这个问题又一次出现了,在我这里直接运行可以正常显示,但是打原创 2017-02-19 22:12:47 · 1507 阅读 · 7 评论 -
Dagger2.0基本使用及简单原理
一.Dagger2.0背景 依赖注入主要解决代码耦合性问题,使对象在一个封闭,独立的地方初始化,当对象的实现方法需要大量修改的时候不需要大改代码库。 在Android中的应用主要是在MVP模式中P层与V层的解耦,以及在网络请求中配合Retrofit2.0进行网络请求。二.比较 依赖注入分为两种:反射和APT工具 反射:利用原创 2017-02-20 23:06:38 · 570 阅读 · 7 评论 -
android混淆
一、背景 最近我负责的项目要添加混淆,有点小棘手,之前只是知道有这么东西,但是没有真正做过代码的混淆,于是各种google,在此记录一下二、混淆 工具:as+4.4 1.首先在项目的gradle中开启混淆 在android->buildTypes->debug or release节点中设置 minifyEnabled 为t原创 2017-04-05 14:37:09 · 463 阅读 · 5 评论 -
Android之神策集成
一、背景 神策:专注于大数据的分析,提供大数据分析和解决方案 之前公司一直用cobub,只是对用户的渠道和行为做简单的统计,由于产品的需求,需要更加详细的用户统计,比如按钮点击,数据来源,数据信息等内容,因此转向了神策二、集成 工具:as+gradle 1.添加依赖 compile 'com.sensorsdata.an原创 2017-04-18 22:34:01 · 4512 阅读 · 9 评论 -
Fresco图片加载
关于 Fresco Fresco 是一个强大的图片加载组件。 Fresco 中设计有一个叫做 image pipeline 的模块。它负责从网络,从本地文件系统,本地资源加载图片。为了最大限度节省空 间和CPU时间,它含有3级缓存设计(2级内存,1级文件)。 Fresco 中设计有一个叫做 Drawees 模块,方便地显示loading图,当图片不再显示在屏幕上时,及时地释放内存和空间占用原创 2016-06-25 21:18:43 · 472 阅读 · 3 评论 -
Android系统启动原理
我们的Android手机在启动的时候都做了些什么,还有手机为什么需要耗费几十秒才能启动起来?? 一、启动过程 Android系统架构由四层组成,底层为Linux内核层,第二层为Librares(c或c++)层,第三层为frameWork层 顶层为app层;framework层和app层都算作是java层 二、详解 系统引导程序启动Linu原创 2015-12-23 22:57:59 · 1514 阅读 · 15 评论 -
Android四大组件之BroadcastReceiver
BroadcastReceiver即广播接收者,android四大组件之一 一、简介 BroadcastReciver是用来接收各种消息机制并作出响应的处理的,主要用在应用程序之间的通信,比如: 发短信,打电话; 既然用在通信中那么至少应该有两个应用程序,一个发送方和一个接收方,而他们之间也会类似于钥匙 和锁的协议 广播接收者都需原创 2015-11-13 18:46:48 · 522 阅读 · 3 评论 -
MD5加密
java.security.MessageDigest类用于为应用程序提供信息摘要算法的功能,即生成散列码,通过数据 中单向的哈希函数,接收任意长度的数据生成固定长度的哈希值,MD5就是其中的一种加密算法 一、MD5简介 任何数据经过MD5加密后值是唯一的,因此可以用来作为数据的唯一标识 MD5特点: 压缩性:任意长度的数据都会被经过MD5加密后都是长度固定原创 2015-11-22 22:19:18 · 1060 阅读 · 9 评论 -
Android四大组件之Service
Service,服务,是一种需要长期后台运行的进程,例如,数据的更新,定时的轮询,监视硬件的插入等 一、简介 Service是一种中生命周期比较长的组件,没有界面不与用户交互;长期运行在后台执行与界面无关 的操作;与Thread类似,但是使用线程不安全;最重要的一点是Service也是运行在主线程的,不能做耗 时的操作 二、详解 1.首先了原创 2015-11-19 22:30:10 · 528 阅读 · 6 评论 -
Fragment初识
Fragment翻译为碎片、片段;Android3.0引入进来的,是一种分解activity显示的组件 一、简介 1.当一个activity内容太多时,界面的切换会很不流畅,用fragment把activity'切碎'后可以提高流 畅度,适用不同的屏幕尺寸,而且每个fragment都有自己的生命周期 2.fragment使用比较灵活,即以类的形式原创 2015-11-25 22:58:31 · 510 阅读 · 8 评论 -
Android中事件分发机制
Android(触摸屏)中应用程序与用户交互用的就是touch事件来完成的,一个界面上的控件会有很多,那么 一个touch事件是如何传递的呢? 一、简介 Android中的touch事件都是以down(按下)事件开始,up(抬起)事件结束的 事件类型有:ACTION_DOWN(按下)、ACTION_UP(抬起)、ACTION_MOVE(移动)原创 2015-12-12 00:01:38 · 536 阅读 · 5 评论 -
AndroidStudio引入.so库
开发时我们经常会用到第三方的jar包或者.so动态链接库,在用这些文件的时候需要放在编译器指定的 位置才能被正确的打包到.apk文件中 一、问题 在eclipse开发Android时.so库只需要放在armeabi文件夹中,并且armeabi文件夹和普通jar包放在libs 下即可,但是在用AndroidStudio开发的时候so库就有所不同了,如果按照在eclipse中目原创 2015-12-15 00:04:44 · 666 阅读 · 7 评论 -
百度地图
很多应用都有获取自己位置的功能,比如QQ,微信等等都能获取到自己的位置 一、核心类简介 1.SDKInitializer:初始化SDK配置 2.MapView:地图数据显示 3.BaiduMap:控制地图状态 二、原理 Ⅰ.前期准备 jar包、库文件引入,key值获取 Ⅱ.地图显示 private BaiduMap bai原创 2015-11-28 23:45:27 · 857 阅读 · 8 评论 -
自定义控件-ViewPager篇
相信大家都看到过手机上循环播放的广告吧,这就用到我们的自定义控件了,看下图 一、原理简介 1.在布局文件中用v4包下的ViewPager设置一个布局 2.在activity中找到该布局文件的ViewPager对象 3.设置ViewPager的数据(数据适配器) 4.开启子线程,动态改变ViewPager当前页的数原创 2015-11-29 23:26:33 · 872 阅读 · 13 评论 -
自定义控件-侧拉菜单
手机版qq有一个挺不错的效果是侧拉菜单,在主界面向右滑动就会在左侧出现关于自己qq的一些信息; 实现侧滑效果目前知道有三种: 一是SlidingDrawer,谷歌在Android4.2之后已经不建议使用 二是DrawerLayout,谷歌提供的挺好用的控件,只需在布局文件中加载即可 三是第三方提供的开源控件,更加的灵活;下面就来简单介绍一下原理 一、需求 1.原创 2015-12-02 23:11:27 · 964 阅读 · 3 评论 -
Android屏幕适配
Android屏幕大小种类有很多,需要在开发的时候适配不同的手机屏幕,适配的方案有很多种可以在开发 中选择最适合的 一、常见适配方案 1.图片适配 2.等比缩放 分为:dimens(values文件下) 权重 java代码控制子控件宽高 3.layout重新布局 4.根据百分比布局(AndroidStudio)原创 2015-12-20 22:18:58 · 523 阅读 · 12 评论 -
java内存泄漏问题
一、内存中都有什么栈:存放引用及基础变量,线程独有堆: 存放创建的对象,线程共享方法区: 存放方法的共享代码区,由对象共享,线程共享数据区:存放静态变量和常量,线程共享 主要由这四块内存区域组成,每块内存存放的数据不同,职能也不同二、堆栈分析栈 :先进后出 不管在哪里创建的变量或者引用都会存放在栈中,并且在方法执行完或者对象被销毁就会释放栈中的内存,并且每个线程都有自己的栈内存,不原创 2017-08-20 11:14:15 · 393 阅读 · 1 评论