android框架

SupportAnnotation和AndroidAnnotations

▼魔方 西西 提交于 2019-12-01 09:55:15
截个图,大概annotations 包中有40个注解,看名称一般就知道是干什么的了, 这个是 support-annotations-23.1.1 中的所有的注解, ===================另外一个开源的注解框架================================= 这个开源的名称是 androidannotations-api, 不是官方的,名字很像. 官方网站 : http://androidannotations.org/ , 有个对比前,对比后, 效果很诱人,想试试. 这里是在Android Studiozhong的配置, http://blog.csdn.net/caiwenfeng_for_23/article/details/45801151 有一些注意的就是, 对Activity的注解之后, 需要在Activity后面加上"_",清单中对Activity注册也要加上"_" 然后就是被人吐槽的Rest Api ,应该只支持简单的联网处理, 复杂的用这个就不行了, 然后这里还有一个出bug 的问题, http://blog.csdn.net/caiwenfeng_for_23/article/details/47681161 然后这儿有个一系列教程,2天了,终于找到一个系列了,这个相当详细了: http://zhenhappy.github

Android Bluetooth opp package 学习笔记

旧巷老猫 提交于 2019-12-01 09:49:24
一、背景及相关知识学习 1、Android Bluetooth SDK 首先,要操作蓝牙,先要在AndroidManifest.xml里加入权限 < uses-permission android:name ="android.permission.BLUETOOTH_ADMIN" /> < uses-permission android:name ="android.permission.BLUETOOTH" /> 我们可以通过intent调用android.bluetooth.opp包下的activity也可以直接调用android.bluetooth包使用android的蓝牙功能。 方法如下: 通过android.bluetooth.opp包我们需要作的是: 打开蓝牙: Intent enabler= new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(enabler,reCode); // 同startActivity(enabler); 通过android.bluetooth包我们需要做的是以下几点: (1).BluetoothAdapter 顾名思义,蓝牙适配器,直到我们建立bluetoothSocket连接之前,都要不断操作它。BluetoothAdapter里的方法很多

Android常用优秀开源框架

倾然丶 夕夏残阳落幕 提交于 2019-12-01 06:56:53
Android常用优秀开源框架 https://github.com/Ericsongyl/AOSF AOSF:全称为Android Open Source Framework,即Android优秀开源框架汇总。包含:网络请求okhttp,图片下载glide,数据库greenDAO,链式框架RxJava,组件路由ARouter,消息传递通信EventBus,热更新Tinker,插件化框架Replugin,文件下载FileDownloaer,图片选择PhotoPicker,图片滤镜/毛玻璃等特效处理,GIF图片展示控件,图片九宫格控件NineGridView,对话框Dialog,导航指示器ViewpagerIndicator,进度条ProgressWheel,下拉刷新SmartRefreshLayout,数据库调试等,应有尽有。 说明:大家有好的开源框架,热烈欢迎大家提Issue或Pull requests进行补充和完善,我们一起把优秀的框架汇集起来,为自己和他人的开发提供便利,提高效率,避免重复造轮子或耗费查找时间,谢谢 1.网络请求框架 okhttp OkGo 2.图片下载框架 glide picasso glide和picasso的对比: 加载一般图片 加载gif 图片质量细节 方法数 缓存 glide OK OK且显示动图 有锯齿 2678 根据ImageView尺寸

Android Studio 代码混淆

时光怂恿深爱的人放手 提交于 2019-12-01 06:45:35
在Android studio 进行代码混淆配置。 proguard 配置 -keepclasseswithmembers 指定的类和类成员被保留,假如指定的类成员存在的话。 -dontwarn 缺省proguard 会检查每一个引用是否正确,但是第三方库里面往往有些不会用到的类,没有正确引用。如果不配置的话,系统就会报错。 -keep 指定的类和类成员被保留作为 入口 。 -keepclassmembers 指定的类成员被保留。 proguard 问题和风险 代码混淆后虽然有混淆优化的好处,但是它往往也会带来如下的几点问题 混淆错误,用到第三方库的时候,必须告诉 proguard 不要检查,否则proguard 会报错。 运行错误,当code 不能混淆的时候,我们必须要正确配置,否则程序会运行出错,这种情况问题最多。 调试苦难,出错了,错误堆栈是混淆后的代码 ,自己也看不懂。 不能混淆的代码 下面这样代码混淆的时候要注意保留。 Android系统组件,系统组件有固定的方法被系统调用。 被Android Resource 文件引用到的。名字已经固定,也不能混淆,比如自定义的View Android Parcelable ,需要使用android 序列化的。 Java序列化方法,系统序列化需要固定的方法。 枚举 ,系统需要处理枚举的固定方法 本地方法,不能修改本地方法名

腾讯、网易云、字节跳动面试点总结—AMS在Android起到什么作用?

谁说我不能喝 提交于 2019-12-01 05:40:02
本专栏专注分享大型Bat面试知识,后续会持续更新,喜欢的话麻烦点击一个关注 面试官: AMS在Android起到什么作用,简单的分析下Android的源码 心理分析:这道题在发生在大多数场景下。面对这道题 很多求职很茫然,不知道该如何说起。AMS本身比较复杂难以理解。工作多年也很难弄清AMS的作用,其实我们大可从以下几点入手组件启动、进程切换、Crash异常入手 求职者:AMS难以表述 我们就从最熟知 的Activity启动入手,逐步深入和分析,用定力告诉面试官,我层深入研究过。接下来我们从五条线分析AMS作用及机制 概述 相信大多数动脑同学对文章中提到的ActivityManagerService(以后简称AMS)都有所耳闻。 AMS是Android中最核心的服务,主要负责系统中四大组件的启动、切换、调度及应用进程的管理和调度等工作,其职责与操作系统中的进程管理和调度模块相类似,因此它在Android中非常重要。 AMS是碰到的第一块难啃的骨头[①],涉及的知识点较多。为了帮助读者更好地理解AMS,接下来将带小伙伴么按五条不同的线来分析它。 第一条线:同其他服务一样,将分析SystemServer中AMS的调用轨迹。 第二条线:以am命令启动一个Activity为例,分析应用进程的创建、Activity的启动,以及它们和AMS之间的交互等知识。 第三条线和第四条线

单元测试

淺唱寂寞╮ 提交于 2019-12-01 05:06:16
1. 为什么做单测 单测的好处 减少bug 快速定位bug 提高代码质量 减少调试时间 放心重构 不得不写单测的原因 在成为大牛的路上,单测是必备技能 单测可以给你信心 保住面子 难处 难于坚持,在快速迭代开发过程中,可供写单测的时间过少 扩展 TDD(Test Drive Develop):测试驱动开发,是一种非常高效的开发方式 2. 测试框架 2.1 概述 junit4.12 (单测框架) mockito1.9.5(mock工具) robolectric3.1.2 (模拟Android虚拟机) 2.2 junit4.12 Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。 示例代码: @Before: 执行单测之前的初始化操作。 @After:单测完成后收尾工作。 @Before public void setUp() throws Exception { } @After public void tearDown() throws Exception { } assume: 用于判断测试用例的入参是否有业务含义的工具,如果入参不符合预期时会抛出 assumptionViolatedException、assumeTrue

Android 4.2蓝牙介绍

眉间皱痕 提交于 2019-12-01 03:59:40
Tieto公司某蓝牙大牛写得《程序员》投稿文章 Android 4.2 蓝牙介绍 蓝牙一词源于公元十世纪丹麦国王 HaraldBlatand 名字中的 Blatand 。 Blatand 的英文之意就是 Blue tooth 。这是因为这位让丹麦人引以为傲的国王酷爱吃蓝莓以至于牙龈都被染成蓝色。由于 Blatand 统一了丹麦和挪威,所以,作为无线通信技术的一种,蓝牙技术之所以取名 Bluetooth 可谓志向远大。不过,在以 Android 为代表的智能机出现以前,蓝牙在早期智能机甚至功能机中一直扮演着 “ 鸡肋 ” 的角色。那么,随着无线通信技术的快速发展以及 Android 的普及,蓝牙能给我们带来哪些新的变化呢? 本文将从蓝牙核心规范的发展历史、最具应用前景的几个蓝牙 Profile 以及 Android 4.2 中蓝牙实现情况等几个方面向读者介绍蓝牙技术。 一 蓝牙规范介绍 作为一种通用的无线通信技术,规范自然是蓝牙技术的核心。蓝牙规范可分为两个层次,如图 1 所示: 图 1 蓝牙规范的层次结构 由图 1 可知蓝牙规范包括: Core Specification(核心规范),用于规定蓝牙设备必须实现的通用功能和协议层次。它由软件和硬件模块组成,两个模块之间的信息和数据通过主机控制接口(HCI)的解释才能进行传递。 Profiles(蓝牙应用规范)

Android 4.2蓝牙介绍

巧了我就是萌 提交于 2019-12-01 03:59:28
Tieto公司某蓝牙大牛写得《程序员》投稿文章 Android 4.2 蓝牙介绍 蓝牙一词源于公元十世纪丹麦国王 HaraldBlatand 名字中的 Blatand 。 Blatand 的英文之意就是 Blue tooth 。这是因为这位让丹麦人引以为傲的国王酷爱吃蓝莓以至于牙龈都被染成蓝色。由于 Blatand 统一了丹麦和挪威,所以,作为无线通信技术的一种,蓝牙技术之所以取名 Bluetooth 可谓志向远大。不过,在以 Android 为代表的智能机出现以前,蓝牙在早期智能机甚至功能机中一直扮演着 “ 鸡肋 ” 的角色。那么,随着无线通信技术的快速发展以及 Android 的普及,蓝牙能给我们带来哪些新的变化呢? 本文将从蓝牙核心规范的发展历史、最具应用前景的几个蓝牙 Profile 以及 Android 4.2 中蓝牙实现情况等几个方面向读者介绍蓝牙技术。 一 蓝牙规范介绍 作为一种通用的无线通信技术,规范自然是蓝牙技术的核心。蓝牙规范可分为两个层次,如图 1 所示: 图 1 蓝牙规范的层次结构 由图 1 可知蓝牙规范包括: Core Specification(核心规范),用于规定蓝牙设备必须实现的通用功能和协议层次。它由软件和硬件模块组成,两个模块之间的信息和数据通过主机控制接口(HCI)的解释才能进行传递。 Profiles(蓝牙应用规范)

Android框架之EventBus的使用

穿精又带淫゛_ 提交于 2019-12-01 02:52:15
简介 EventBus是由greenrobot组织贡献的一个Android事件发布/订阅的轻量级框架。EventBus是一个Android端优化的publish/subscribe消息总线,简化了应用程序内各组件间、组件与后台线程间的通信。 优势 简化组件通信 解耦事件发送端和接收端 在Activity、Fragment和后台线程之间运行良好 避免复杂且易出错的依赖问题和生命周期问题 运行速度快 jar包小(小于50K) 具有指定分发线程和用户优先级等高级特性 特性 简单但强大:EventBus是一个微小的库,具有超级容易学习的API。然而,您的软件架构可能因组件解耦而受益:订阅者在使用事件时不用关心这个事件是谁发送的。 大量验证:EventBus是最常用的Android库之一:成千上万的应用程序使用EventBus,其中不乏非常受欢迎的应用程序。我们认为差不多有十亿应用程序使用EventBus。 高性能:Android系统上,性能尤为重要。 EventBus被针对性的做了大量的分析和优化;EventBus可能是这类开源库中速度最快的 解决方案。 基于API的便捷注解(不牺牲性能):只需将@Subscribe注解添加订阅方法即可。由于构建的时候花费了时间来建立注解的索引,所以EventBus不需要在应用程序的运行时间执行注释反射,注解反射的方式在Android上相当慢。

android mediaplayer 架构

我只是一个虾纸丫 提交于 2019-12-01 00:18:59
stagefright与opencore对比(转) 1引言 Android froyo版本多媒体引擎做了变动,新添加了stagefright框架,并且默认情况android选择stagefright,弃用之前的opencore,仅仅对opencore中的omx-component部分做了引用。 Stagefright自android2.0后才添加,其稳定性有待商榷,是否存在bug也未知,opencore自android诞生起便存在,稳定性有保障。不过,从目前android代码看,opencore有被stagefright取代的趋势,所以在opencore上所作工作也许会无法沿用。Opencore上的开发较stagefright上要复杂耗时些。 2框架变动 以MediaPlayer为例,我们先看一下多媒体的简单框架。 上图可知,stagefright是在MediaPlayerService这一层加入的,和opencore是并列的,在选用opencore还是stagefright的代码切换上也非常容易。 具体stagefright的内部变动,可见下图概述。Stagefright并没有完全抛弃opencore,主要是做了一个OMX层,用来引用opencore的omx-component部分。而stagefright内部而言,与opencore是完全不同的设计。 3具体差异 3