android架构

Andriod经典之作(你必须知道 Service 用法)

。_饼干妹妹 提交于 2019-12-01 10:53:01
1、Service的种类 按运行地点分类: 应用本地服务(Local)远程服务(Remote) 应用本地服务(Local) 1) 区别:该服务依附在主进程上, 2) 优点:服务依附在主进程上而不是独立的进程,这样在一定程度上节约了资源,另外Local服务因为是在同一进程因此不需要IPC,也不需要AIDL。相应bindService会方便很多。 3) 缺点:主进程被Kill后,服务便会终止。 4) 应用:非常常见的应用如:HTC的音乐播放服务,天天动听音乐播放服务。 远程服务(Remote) 1) 区别:该服务是独立的进程, 2) 优点:服务为独立的进程,对应进程名格式为所在包名加上你指定的android:process字符串。由于是独立的进程,因此在Activity所在进程被Kill的时候,该服务依然在运行,不受其他进程影响,有利于为多个进程提供服务具有较高的灵活性。 3) 缺点:该服务是独立的进程,会占用一定资源,并且使用AIDL进行IPC稍微麻烦一点。 4) 应用:一些提供系统服务的Service,这种Service是常驻的。 其实remote服务还是很少见的,并且一般都是系统服务。 按运行类型分类: 前台服务后台服务 前台服务 1)会在通知一栏显示 ONGOING 的 Notification, 2)当服务被终止的时候,通知一栏的 Notification 也会消失

拿起键盘就是干:跟我一起徒手开发一套分布式IM系统

倾然丶 夕夏残阳落幕 提交于 2019-12-01 09:01:01
1、引言 老读者应该还记得我在去年国庆节前分享过一篇《 技术干货:从零开始,教你设计一个百万级的消息推送系统 》,虽然我在文中有贴一些伪代码,依然有些朋友希望能直接分享一些可以运行的源码。好吧,质疑我穷我无话可说(因为是真穷。。),怀疑我撸码的能力那是绝对不行,所以这次准备拉起键盘大干一场——徒手撸套分布式IM出来!^_^! 本文记录了我开发的一款面向IM学习者的 IM系统—— CIM (全称:CROSS-IM),同时提供了一些组件帮助开发者构建一款属于自己可水平扩展的 IM。 通过学习本文和CIM代码,你可以获得以下知识: 1)如何从头开发一套IM(CIM的客户有点弱,见谅见谅); 2)如何设计分布式的IM架构; 3)如何将你的分布式IM架构用代码和相关技术实现出来。 本文配套的CIM源码地址: 主要镜像: https://github.com/crossoverJie/cim 备用镜像: https://github.com/52im/cim 以下文章与本文类似或相关,同样有助于您的IM开发入门: 《 自已开发IM有那么难吗?手把手教你自撸一个Andriod版简易IM (有源码) 》 《 适合新手:从零开发一个IM服务端(基于Netty,有完整源码) 》 《 拿起键盘就是干:跟我一起徒手开发一套分布式IM系统 》 《 浅谈IM系统的架构设计 》 《 简述移动端IM开发的那些坑

创蓝闪验接入文档

拟墨画扇 提交于 2019-12-01 07:55:53
一.准备工作 概述 本文是闪验SDK_Android v2.3.0 版本的接入文档,用于指导SDK的使用方法,默认读者已经熟悉 IDE(Eclipse 或者 Android Studio)的基本使用方法,以及具有一定的 Android 编程知识基础。 闪验SDK支持minSdkVersion 16及以上版本 闪验SDK支持中国移动3/4G、联通3/4G、电信4G的取号能力,在3G网络下时延会更高 闪验SDK支持单数据网络/数据网络与WiFi网络双开,不支持单WiFi网络 对于双卡手机,闪验SDK只对当前流量卡取号,双卡均未开数据流量SDK将会返回错误码 创建应用 应用的创建流程及APPID的获取,请查看「 账号创建 」文档 快速体验demo Android压缩包附带的apk文件夹中是闪验demo的安装包,可以直接安装到Android手机上。并快速体验闪验在您的手机上的表现。 Android压缩包附带的demo文件夹中是闪验的示例工程,使用Android studio打开示例工程,完成以下步骤配置,然后直接运行起来测试。 a.将build里面的applicationId换成对应的测试包名 b.将签名配置改成您的签名配置 c.将AppId和AppKey换成您在闪验平台创建应用后生成的信息 开发环境搭建 (1)将开发包拷贝到工程 a

【转】Android root检测方法总结

a 夏天 提交于 2019-12-01 04:53:45
一 为什么要进行root检测? 出于安全原因,我们的应用程序不建议在已经root的设备上运行,所以需要检测是否设备已经root,以提示用户若继续使用会存在风险。 二 root了会有什么风险? 在Linux操作系统中,root的权限是最高的,也被称为超级权限的拥有者。 在系统中,每个文件、目录和进程,都归属于某一个用户,没有用户许可其它普通用户是无法操作的,但对root除外。 root用户的特权性还表现在:root可以超越任何用户和用户组来对文件或目录进行读取、修改或删除(在系统正常的许可范围内);对可执行程序的执行、终止;对硬件设备的添加、创建和移除等;也可以对文件和目录进行属主和权限进行修改,以适合系统管理的需要(因为root是系统中权限最高的特权用户);root是超越任何用户和用户组的,基于用户ID的权限机制的沙盒是隔离不了它的。 三 不root为什么就安全了呢? Android安全架构是基于Linux多用户机制的访问控制。应用程序在默认的情况下不可以执行其他应用程序,包括读或写用户的私有数据(如联系人数据或email数据),读或写另一个应用程序的文件。 一个应用程序的进程就是一个安全的沙盒(在受限的安全环境中运行应用程序,在沙盒中的所有改动对操作系统不会造成任何危害)。它不能干扰其它应用程序,除非显式地声明了“permissions”

Android系统性能调优工具介绍

╄→尐↘猪︶ㄣ 提交于 2019-12-01 04:12:06
经作者授权,发表Tieto某青年牛的一篇《程序员》大作。 Android 系统性能调优工具介绍 在软件开发过程中,想必很多读者都遇到过系统性能问题。而解决系统性能问题的几个主要步骤是: 测评:对系统进行大量有针对性的测试,以得到合适的测试数据。 分析系统瓶颈:分析测试数据,找到其中的hotspot(热点,即bottleneck)。 性能优化:对hotspot相关的代码进行优化。 由上述步骤可知,性能优化的目标对象是 hotspot 。如果找到的 hotspot 并非真正的热点,则性能优化的结果必然是事倍功半甚至竹篮打水一场空。所以,作为 Android 性能调优相关知识的第一部分,本篇首先将向读者介绍 Android 平台中三个重要的性能测试工具,它们能很好得帮助开发者找到 hotspot 。 一 Traceview 介绍 1.1 Traceview 简介 Traceview 是 Android 平台特有的数据采集和分析工具,它主要用于分析 Android 中应用程序的 hotspot 。 Traceview 本身只是一个数据分析工具,而数据的采集则需要使用 Android SDK 中的 Debug 类或者利用 DDMS 工具。二者的用法如下: 开发者在一些关键代码段开始前调用Android SDK中Debug类的startMethodTracing函数

Android Weekly Notes Issue 235

馋奶兔 提交于 2019-11-30 22:33:02
December 11th, 2016 Android Weekly Issue #235 本期内容包括: 开发一个自定义View并发布为开源库的完整流程介绍; 用 AnimatedVectorDrawable 实现的动画; 什么样的程序是可测试的; DownloadManager 介绍; Okhttp的重试; Android 7取消了 file:// ; Android Studio即将推出的build cache功能; 支持离线模式的app构架; 如何写自定义的lint规则; Epoxy, 一个处理复杂RecyclerView屏的库; FragmentPagerAdapter 和 FragmentStatePagerAdapter 的比较等. ARTICLES & TUTORIALS Make an android custom view, publish and open source 作者开发了一个环形的SeekBar, 并把它作为一个库发布到了JCenter. 作者首先讲了自定义View的实现 : 首先是关于View生命周期的介绍, 在写自定义View的时候有几个关键的生命周期回调需要处理: 作者实现的几个关键步骤讲解: 自定义属性并获取. 在 onMeasure() 中控制尺寸. 在 onDraw() 中绘制: 避免在 onDraw() 中分配内存; 用

Android 4.0 源代码结构

自闭症网瘾萝莉.ら 提交于 2019-11-30 22:25:53
21、Android 4.0 源代码结构 Android源码的第一级目录结构 Android/abi (abi相关代码。ABI:application binary interface,应用程序二进制接口) Android/bionic(bionic C库) Android/bootable(启动引导相关代码) Android/build(存放系统编译规则及generic等基础开发配置包) Android/cts(Android兼容性测试套件标准) Android/dalvik(dalvik JAVA虚拟机) Android/development(应用程序开发相关) Android/device (设备相关代码) Android/docs (介绍开源的相关文档) Android/external(android使用的一些开源的模组) Android/frameworks(核心框架——java及C++语言,是Android应用程序的框架。) Android/hardware(主要是硬件适配层HAL代码) Android/libcore(核心库相关) Android/ndk (ndk相关代码。AndroidNDK(Android NativeDevelopment Kit)是一系列的开发工具,允许程序开发人员在Android应用程序中嵌入C/C++语言编写的非托管代码。)

Android Weekly Notes Issue 235

妖精的绣舞 提交于 2019-11-30 21:58:40
December 11th, 2016 Android Weekly Issue #235 本期内容包括: 开发一个自定义View并发布为开源库的完整流程介绍; 用 AnimatedVectorDrawable 实现的动画; 什么样的程序是可测试的; DownloadManager 介绍; Okhttp的重试; Android 7取消了 file:// ; Android Studio即将推出的build cache功能; 支持离线模式的app构架; 如何写自定义的lint规则; Epoxy, 一个处理复杂RecyclerView屏的库; FragmentPagerAdapter 和 FragmentStatePagerAdapter 的比较等. ARTICLES & TUTORIALS Make an android custom view, publish and open source 作者开发了一个环形的SeekBar, 并把它作为一个库发布到了JCenter. 作者首先讲了自定义View的实现 : 首先是关于View生命周期的介绍, 在写自定义View的时候有几个关键的生命周期回调需要处理: 作者实现的几个关键步骤讲解: 自定义属性并获取. 在 onMeasure() 中控制尺寸. 在 onDraw() 中绘制: 避免在 onDraw() 中分配内存; 用

[深入理解Android卷一全文-第一章]阅读前的准备工作

给你一囗甜甜゛ 提交于 2019-11-30 21:52:58
由于《深入理解Android 卷一》和《深入理解Android卷二》不再出版,而知识的传播不应该因为纸质媒介的问题而中断,所以我将在OSC博客中全文转发这两本书的全部内容。 第一章 阅读前的准备工作 本章主要内容 本章简单介绍Android系统架构、编译环境的搭建以及一些工具的使用。 1.1 系统架构 1.1.1 Android系统架构 Android是Google公司推出的一款手机开发平台。该平台本身是基于Linux内核的,图1-1展示了这个系统的架构: 图1-1 Android系统架构 从上图中可以看出,Android系统大体可分为四层,从下往上依次是: Linux内核层,目前Android2.2(代号为Froyo)基于Linux内核2.6版本。 Libraries层,这一层提供动态库(也叫共享库)、Android运行时库、Dalvik虚拟机等。从编程语言上来说,这一层大部分都是用C或C++写的,所以也可以简单地把它看成是Native层。 Libraries层之上是Framework层,这一层大部分用Java语言编写。它是Android平台上Java世界的基石。 Framework层之上就是Applications层了,和用户直接交互的就是这些应用程序,它们都是用Java开发的。 从上面的介绍可看出,Android最大的特点之一

Android实现推送方式解决方案

£可爱£侵袭症+ 提交于 2019-11-30 16:57:37
本文介绍在Android中实现推送方式的基础知识及相关解决方案。推送功能在手机开发中应用的场景是越来起来了,不说别的,就我们手机上的新闻客户端就时不j时的推送过来新的消息,很方便的阅读最新的新闻信息。这种推送功能是好的一面,但是也会经常看到很多推送过来的垃圾信息,这就让我们感到厌烦了,关于这个我们就不能多说什么了,毕竟很多商家要做广告。本文就是来探讨下Android中实现推送功能的一些解决方案,也希望能够起到抛砖引玉的作用。^_^   1.推送方式基础知识:   在移动互联网时代以前的手机,如果有事情发生需要通知用户,则会有一个窗口弹出,将告诉用户正在发生什么事情。可能是未接电话的提示,日历的提醒,或是一封新的彩信。推送功能最早是被用于Email中,用来提示我们新的信息。由于时代的发展和移动互联网的热潮,推送功能更加地普及,已经不再仅仅用在推送邮件了,更多地用在我们的APP中了。   当我们开发需要和服务器交互的应用程序时,基本上都需要获取服务器端的数据,比如《地震应急通》就需要及时获取服务器上最新的地震信息。要获取服务器上不定时更新的信息,一般来说有两种方法:第一种是客户端使用Pull(拉)的方式,就是隔一段时间就去服务器上获取一下信息,看是否有更新的信息出现。第二种就是 服务器使用Push(推送)的方式,当服务器端有新信息了,则把最新的信息Push到客户端上。这样