android架构

Android实现推送方式解决方案

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

【Android JetPack系列】LiveData

生来就可爱ヽ(ⅴ<●) 提交于 2019-11-29 13:09:30
一、前言 1、什么是 LiveData LiveData 是一个数据持有类。它具有以下特点: 数据可以被 观察者 订阅; 能够感知组件( Fragment、Activity、Service ) 的生命周期; 只有在 组件 处于 激活状态才会通知观察者有数据更新; 2、LiveData 能为我们做什么 能够保证 数据 和 UI 统一 。 LiveData 采用了 观察者模式, LiveData 是被观察者,当数据有变化时会通知 UI 。 减少内存泄露 。 LiveData 能够感知到组件的生命周期,当组件处于 销毁( destroyed ) 状态时,观察者对象会被清除,当 Activity 停止时不会导致 crash ,因为 组件处于非激活状态时,不会收到 LiveData 中数据变化的通知。 组件和数据相关的内容能够实时更新 。组件在前台的时候能够实时收到数据改变的通知,当组件从后台切换到前台时, LiveData 能够将最新的数据通知组件,因此保证了组件中和数据相关的内容能够实时更新。 解决横竖屏切换( configuration change )数据问题 。在屏幕发生旋转时,不需要额外的处理来保存数据,当屏幕方向变化时,组件会被 recreate ,然而系统并不能保证你的数据能够被恢复。当采用 LiveData 保存数据时,因为数据和组件分离了,当组件被 recreate

Android组件化架构学习笔记——组件化编程之静态变量/资源/混淆/多渠道打包

廉价感情. 提交于 2019-11-29 11:24:06
一.组件化的静态变量: R.java的生成: 各个module会生成aar文件,并且被引用到Application module中,最终合并为apk文件。当各个次级module在Application module中被解压后,在编译时资源R.java会被重新解压到build/generated/source/r/debug(release)/包名/R.java中。 当每个组件中的aar文件汇总到App module中时,也就是编译的初期解析资源阶段,其每个module的R.java释放的同时,会检测到全部的R.java文件,然后通过合并,最后合并成唯一的一份R.java资源。 R2.java及 ButterKnife : ButterKnife 是一个专注于Android View的注入框架,可以大量的减少findViewById和setOnClickListener操作的第三方库。 注解中只能使用常量,如不是常量会提示attribute value must be contant的错误。可以在使用替代方法,原理是将R.java文件复制一份,命名为R2.java。然后给R2.java变量加上final修饰符,在相关的地方直接引用R2资源。 如项目中已经使用 ButterKnife 维护迭代了一段时间,那么使用R2.java的方案适配成本是最低的。

我现在还缺什么

懵懂的女人 提交于 2019-11-29 06:39:42
  学了这么长时间了,现在越发感觉自己到了一个瓶颈.   先列出最近的学习项目: Android开发; github熟悉; Android Studio的接触 Mooc的c语言学习 跑步    每个项目的动机: Android开发: 是我的主技能,因为学了java以后感觉网页开发没手机客户端开发有意思,加上搞Android开发自我感觉独立性更好就决定做开发.           现在学了将近7个月了,基本知识已经算是过了一遍,只是感觉浮于表面,没有绝对的使用好目前的工具性知识,对理论性知识的理解还不够完全.           想通过项目的练习来熟悉和巩固当前的知识,清晰知识架构.可是呢,问题来了,首先就是学习github的难度,项目解释大不分都是英语。           我这不到半桶水的水平,阅读起来相当有困难,这个还不算什么,因为这个磕磕拌拌还能搞定,可是好多项目都是用Android Studio编译的           我也只好接触这个软件了,然后呢,大问题来了,md,这哥们真不好伺候,一直报错,而且全是英文,google的解决方法又不能搞定,我就郁闷的很. 现在都没有解决             github上面的项目结构对于我来说有些复杂了,一看就晕,如此反复...           github:这个学习起来还不错,能简单的操作.目前正在基础练习.        

Android开发者必备的42个链接

拟墨画扇 提交于 2019-11-29 04:06:00
下面收集了42个帮助大家学习Android的内容链接,部分内容是面向初学者的,帮助大家从头开始学习Android开发,其他则面向较高级的开发者。希望推荐的这些内容对你有帮助。 官方网站 1、 谷歌Android开发者页面 这里是主站点,在这您可以找到一切资源帮助您开始Android开发。此站包含了很多关于学习基础知识的资源,完整的API引用,以及你开始开发所需的各种工具。此站共分为五个部分: 作为初学者,你应该从 工具 开始,这部分讲解了如何安装AndroidSDK。 教程 为你提供了关于Android的基本介绍,教给你如何写出你的第一个程序。它包括很多的资源,即便成为高级程序员你仍需阅读这里面的文章。 API指南 是对于不同API更技术性的手册,在更加深入理解Android内部工作方面十分有用。 参考手册 包含关于Android库的完整的类引用。 在 Google Services 部分你会找到更多库的信息,这些库可以让你连接到Google的服务,例如地图和Google+。 教程 2、 Vogella的Android教程 这里面包括许多给初学者以及高级Android开发者的教程。这些文章由Lars Vogel编写,文章十分专业,为你提供对Android架构的深入理解。 3、 EduMobile Android开发与编程 在这里你可以找到许多基于单独话题的教程

Android系统源代码分析步骤

会有一股神秘感。 提交于 2019-11-28 22:05:37
目前,互联网行业正在朝着移动互联网方向强劲地发展,而移动互联网的发展离不开背后的移动平台的支撑。众所周知,如今在移动平台市场上,苹果的iOS、谷歌的Android和微软的Windows Phone系统已经形成了三足鼎立的形势,而Android系统的市场占有率是最高的。Android系统之所以能够在市场上占据着第一的位置,一来是因为它依托着谷歌的品德效应和技术实力,二来是因为它是开放的,任何人都可以得到它的源代码,并且能够自由地使用它。既然Android系统是开放的,作为一个移动平台开发人员来说,当然希望能够深入地去分析和研究它的源代码了,然而,Android系统的源代码非常庞大,我们需要循序渐进地去学习。 工欲善其事,必先利其器。为了全面、深入地理解Android系统的源代码,在正式进入Android系统源代码的世界前,我们手头上需要准备好一些参考资料以及实验环境,此外,还需要了解Android系统的架构知识。 参考资料 Android系统的源代码非常庞大和复杂,我们不能贸然进入,否则很容易在里面迷入方向,进而失去研究它的信心。我们应该在分析它的源代码之前学习好一些理论知识,下面就介绍一些与Android系统相关的资料。 我们知道,Android系统是基于Linux内核来开发的,在分析它在运行时库层的源代码时,我们会经常碰到诸如管道(pipe)、套接字(socket)和虚拟文件系统

Android软件架构

怎甘沉沦 提交于 2019-11-28 21:51:23
08_29_Android软件架构 架构的本质 本质, 类似图纸, 不是建筑物; 明确范围 软件设计中, 架构不等于框架; 底层的编码,到设计模式, 到框架,再到架构(微服务,SOA) 好的架构 做好分层分解,把不确定因素变的更容易确定; 可复用:对各个模块进行分开复用 可并行:多方合作,测试,开发,发布,可以分开同时执行 可度量: 可定制:根绝团队具体情况来选择架构; 做好架构 第一步:找到问题; 第二步:怎么解决; ​ 分层,应用层,框架层,AIDL,服务组件,Binder,点对点事件的通信; 第三步:持续演进 黄油计划:屏幕绘制三缓冲 瘦身计划:抽离google应用商店等 安全:运行时权限的增加 性能:17年大多数人用老版本老系统; 演进过程中一定要有目的性。 来源: https://www.cnblogs.com/liguo-wang/p/11428300.html

Android模拟器检测体系梳理

那年仲夏 提交于 2019-11-28 19:24:15
转自:https://www.wireghost.cn/2018/05/10/Android模拟器检测体系梳理/ 模拟器作为一种虚拟机,配合改机工具,能够以较低成本实现设备多开,因此而备受黑灰产的青睐。如何准确识别模拟器成为App开发中的一个重要模块,目前也有专门的公司提供相应的SDK供开发者识别模拟器。通过前段时间对模拟器检测技术的调研,希望能总结出一套特征挖掘的体系化方案。 模拟器概述 定义 安卓模拟器是一种可以运行在电脑上的虚拟设备,通过它可以实现应用的跨平台操作,让移动端APP无需任何改动即可在PC上执行。 特性 优势 随着技术的不断发展,目前模拟器基本已经能够完成手机90%以上的功能。此外,由于在PC端工作,与传统手机相比,具有以下几点优势: 更炫 :支持大屏幕、提供更炫酷的视觉效果,从而能够天然的将一些移动端由于适配成客户端应用; 易上手 :支持鼠标、键盘、手柄、摄像头等众多硬件外设,将操作方式从手指运动中解放出来,发挥外设的优势; 更强的性能 :通过模拟器可自定义配置性能参数,发挥PC硬件性能优势,跑分数据远超手机,使得高配游戏运行不再卡顿; 更好的操控性 :通过虚拟按键功能,能够将任意点触操作、震动、摇摇等手机独有操作映射到键盘的自定义按键,更加简易、便捷; 使用PC工具 :利用PC端其他辅助工具完成对移动端应用的支持,如通过按键精灵完成自动挂机等操作,解放双手;

漫话:如何给女朋友解释鸿蒙OS是怎样实现跨平台的?

两盒软妹~` 提交于 2019-11-28 17:14:10
周末在家休息,女朋友在刷朋友圈,突然她问我: 鸿蒙OS回顾 2019年8月9日华为开发者大会上,华为消费者业务CEO余承东正式宣布发布自有操作系统鸿蒙,内核为Linux内核、鸿蒙微内核和LiteOS。未来将摆脱Linux内核和LiteOS,只有鸿蒙微内核。 鸿蒙(英语:Harmony OS,开发代号Ark)是华为自2012年开发的一款可能兼容Android app的跨平台操作系统。 图:鸿蒙OS的四大技术特性 1.分布式架构首次用于终端OS,实现跨终端无缝协同体验 2. 确定时延引擎和高性能IPC技术实现系统天生流畅 3. 基于微内核架构重塑终端设备可信安全 4. 通过统一IDE支撑一次开发,多端部署,实现跨终端生态共享 什么是跨平台 在以前, 平台 ≈ 操作系统 。所以,传统意义上的跨平台即不依赖于操作系统,也不依赖硬件环境。一个操作系统下开发的应用,放到另一个操作系统下依然可以运行。 但是随着科技的发展, 平台 ≈ 操作系统 已经不成立了,就像华为推出的鸿蒙OS,他可以支持到多种多样的设备,如手机、手表、电脑、汽车、智能家居设备等。 所以,今天我们谈的跨平台,指的是跨设备。即 平台 ≈ 设备 所以,华为希望鸿蒙OS可以运行在各种各样的设备上,所以,鸿蒙OS必然需要具备跨平台的能力。 而且,鸿蒙想要做的不仅仅是操作系统可以跨平台,更重要的是要让用户和开发者真正的感受到跨平台。

NDK Cmake

蹲街弑〆低调 提交于 2019-11-28 16:18:31
CMake与NDK搭配使用时,可以配置的部分变量: ANDROID_PLATFORM :指定Android的目标版本,对应 $NDK/platforms/ 目录下的版本。通常情况下是 defaultConfig 中的 minSdkVersion ,这样就能确保所有大于等于 minSdkVersion 的设备都可以使用编译生成的库。 但是也有例外,比如:当 ANDROID_ABI=arm64-v8a 时,即使 minSdkVersion 为 18 ,但是 ANDROID_PLATFORM=android-21 ,因为从API21开始才支持64位库。这里的版本直接决定了使用 $NDK/platforms 目录下哪个系统版本的库和头文件。 ANDROID_STL :指定使用的STL库,STL库不是Android系统自带的,若使用静态库( c++_static ),则会链接进目标库;若使用动态库(c++_shared),Gradle会将动态库(libc++_shared.so)和目标库一起打包。详情可参考 C++ 库支持 。 ANDROID_ARM_NEON :指定CMake是否构建支持 NEON 的目标库。API大于等于23时,默认值为true,否则为false。 Cmake编译时,是通过 $NDK/toolchains/arm-linux-androideabi-4.9