android 订阅
安卓是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的操作系统。主要使用于移动设备,如智能手机和平板电脑,由美国Google公司和开放手机联盟领导及开发。Android操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源许可证的授权方式,发布了Android的源代码。第一部Android智能手机发布于2008年10月。Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机、智能手表等。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2013年的第四季度,Android平台手机的全球市场份额已经达到78.1%。2013年09月24日谷歌开发的操作系统Android在迎来了5岁生日,全世界采用这款系统的设备数量已经达到10亿台。2014第一季度Android平台已占所有移动广告流量来源的42.8%,首度超越iOS。但运营收入不及iOS。 [1] 展开全文
安卓是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的操作系统。主要使用于移动设备,如智能手机和平板电脑,由美国Google公司和开放手机联盟领导及开发。Android操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源许可证的授权方式,发布了Android的源代码。第一部Android智能手机发布于2008年10月。Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机、智能手表等。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2013年的第四季度,Android平台手机的全球市场份额已经达到78.1%。2013年09月24日谷歌开发的操作系统Android在迎来了5岁生日,全世界采用这款系统的设备数量已经达到10亿台。2014第一季度Android平台已占所有移动广告流量来源的42.8%,首度超越iOS。但运营收入不及iOS。 [1]
信息
更新时间
2019年9月4日 [2]
源码模式
自由及开放源代码软件
发行日期
2008年9月23日
软件许可
Apache License、 GPL等
创始人
安迪·鲁宾(Andy Rubin)
软件语言
C/C++(底层) Java,Kotlin等(应用层)
开发商
Google、开放手持设备联盟
发行商
Google - 谷歌(美国)
软件版本
Android 10(正式版) [2]
软件平台
Google
内核类型
宏内核(Linux内核)
测试版本
Android 11 Developer Preview 3(开发者预览版)
系统家族
类Unix,Linux
软件名称
Android(安卓)
Android系统简介
Android一词的本义指“机器人”,同时也是Google于2007年11月5日 Android logo相关图片(33张) 宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成。Android一词最早出现于法国作家利尔亚当(Auguste Villiers de l'Isle-Adam)在1886年发表的科幻小说《未来夏娃》(L'ève future)中。他将外表像人的机器起名为Android。Android的Logo是由Ascender公司设计的,诞生于2010年,其设计灵感源于男女厕所门上的图形符号,于是布洛克绘制了一个简单的机器人,它的躯干就像锡罐的形状,头上还有两根天线,Android小机器人便诞生了。其中的文字使用了Ascender公司专门制作的称之为“Droid ” 的字体。Android是一个全身绿色的机器人,绿色也是Android的标志。颜色采用了PMS 376C和RGB中十六进制的#A4C639来绘制,这是Android操作系统的品牌象徵。有时候,它们还会使用纯文字的Logo。2012年7月美国科技博客网站BusinessInsider评选出二十一世纪十款最重要电子产品,Android操作系统和iPhone等榜上有名。(Android logo 相关图片相册图片来源:)
收起全文
精华内容
参与话题
问答
  • Android编程经典200例

    2019-07-23 09:56:00
    资源名称:Android编程经典200例内容简介:本书通过200个经典实例全面、系统地介绍了Android平台下的软件开发知识,重点突出、涉及面广、实用性强,在实例的讲解过程中还详细分析了开发思路及侧重点,使读者达到...
  • 一、Android简介

    千次阅读 多人点赞 2018-08-14 21:15:22
     从接触Android学习到开发马上就有3年了,讲道理是不是也该算是一个熟练的码农了(啥时候能成大牛啊),但是你问我Android都有哪些技术啊,开发过程中都有什么难点啊,好吧,我还真的不知道从何讲起,所以下定了...

    引言:

            从接触Android学习到开发马上就有3年了,讲道理是不是也该算是一个熟练的码农了(啥时候能成大牛啊),但是你问我Android都有哪些技术啊,开发过程中都有什么难点啊,好吧,我还真的不知道从何讲起,所以下定了决心,准备像各路大牛学习,坚持写博客,整理记录自己的脑子里的知识。都说写博客特别耗费时间,但是时间嘛就像女人的胸,挤挤总是会有的(坏笑)。好,不多多逼逼,下面开始...

    一、Android系统简介

    Android系统:Google公司发布的手机或者平板上的运行系统,现在最新(180814)的系统更新到了9.0吧,世界上4.03之前的系统应该没人再用了,在Android创建新项目的时候,最低版本选择4.03的时候,它就告诉我,这个选项已经含括了世界上100%的终端设备。每次大的升级都有很多新特性,接下来简单记录一下:

    1、Android 5.0

    (1)5.0之前Android系统都是运行在Dalvik虚拟机上,5.0之后运行环境是ART虚拟机,提升了运行速度。

    (2)提出Material Design设计风格来美化界面设计

      (3) .......

    2、Android 6.0

    (1)运行时权限管理

    (2)电量优化

    (3)规范化APP Link

    (4).......

    3、Android 7.0

    (1)新的Notifycations

    (2)多窗体支持(分屏模式)

    (3)随时随地低耗电

    (4)优化大型应用的安装速度

    (5)......

    4、Android 8.0

    (1)TensorFlow Lite 人工智能的尝试

    (2)画中画,在你使用的程序中可以小窗使用其他程序

    (3) Notifycations Dots 应用程序图标上出现通知小点提示,长按可查看

    (4)Play Console Dashboard 开发人员工具(还没用过,准备看看)

    (5)自定义字体终于支持了

    (6)....

    5、Android 9.0

    (1)室内wifi定位

    (2)刘海平的支持(好吧,我一直觉得很丑)

    (3)Notifycation (每个版本你都改)

    (4)通道设置,广播以及免打扰

    (5)多相机支持

    (6)新的图片解码,动画优化

    (7)....

    Android版本基本上是一年一个,哎,感觉做一个Android程序猿好累啊,每天都要学习新东西,不然很容易就被谷歌抛弃了,5.0之前的技术我就不建议大家去看了,感觉5.0以上机型基本都是最低国人配置了。好吧东西很多,写到这里发现自己要学习的东西还很多,接下来再介绍一下Android的系统架构...

    二、Android系统架构

    Android系统分为四层架构

    1、Linux内核层

        Android系统是基于Linux内核的,Android系统提供硬件的驱动,音频驱动,视频驱动,蓝牙,wifi驱动等等吧。(一般作为android应用开发,没必要学习这些东西)

    2、系统运行库层

    C/C++ 为Android提供解决一些Java代码干不好的事,比如OpenGL/ES 3D绘图,WebKit提供了浏览器内核的支持。(这个作为android开发的我们来说还是很值得学习)

    3、应用框架层

    提供Android构建程序所需要的API,我感觉就是SDK

    4、应用层

    安装在你手机上的应用程序就是组成这一层的东西了

    今天就写这么多了,我呢是被我的学长带入的Android之路(坑),当时他就和我说,Android学起来不是很难,就是学习面比较杂,要学的东西很多,现在想起来,真的是。。。放屁,要学的东西那叫超级多好么,而且我怎么没感觉到简单呢。。。

    展开全文
  • Android Studio 开发详解

    万人学习 2016-09-21 00:57:54
    Android Studio教程,该教材会详细介绍Android Studio如何使用,包括在Windows平台下载安装Android Studio、配置、代码重构、项目调试、jar包管理等。
  • Android入门教程 (一) Android简介和android studio安装

    千次阅读 多人点赞 2020-02-26 14:47:43
    写这篇文章,是为了让萌新们快速入门Android开发,同时讲述一下我对Android的理解,以及未来学习Android的规划,希望能够对大家有点参考价值。 Android是什么? Android就是跟苹果IOS一样,是一个操作系统。我们...

    本文原创首发CSDN,本文链接:https://blog.csdn.net/qq_41464123/article/details/104514467作者博客https://blog.csdn.net/qq_41464123 ,转载请带上本段文字,尤其是脚本之家、码神岛等平台,谢谢配合。


    前言

    写这篇文章,是为了让萌新们快速入门Android开发,同时讲述一下我对Android的理解,以及未来学习Android的规划,希望能够对大家有点参考价值。

     

    Android是什么?

    Android就是跟苹果IOS一样,是一个操作系统。我们的手机,比如华为、VIVO、小米、三星等等都是使用安卓系统。而我们学习Android开发,就是学习制作安卓APP的技能。至于Android底层的实现,我们等到会用了再去研究。

     

    为什么要学Android?

    Android开发是绝大多数高校计算机专业的必修课。要想毕业,就必须要学

    Android开发是一个计算机专业学生的基本功。不求多精通,但一定要会

    根据老师介绍,学习Android开发,不是为了拿高薪offer,而是为了保证自己不失业

    所以对于很多东西,比如微信公众号、PS等等,不求多精通,但一定要会,这也是我学习Android开发的准则

     

    Android Studio环境配置

    首先我们下载这个IDE(集成开发环境) 下载地址: android studio下载官网

    IDE就是我们平时所说的“编译器”,就像C++的VC6.0,Java的eclipse,就是我们写代码的工具

    下载之后,无脑下一步即可,即到如下界面

    注:安装完成之后,桌面不会有Android Studio的快捷方式,我们可以在{AS安装目录}\bin\studio64.exe找到它

    由于每一个IDE都有自己的设置,每个用户都有自己的爱好,有的人喜欢白色背景,有的人喜欢暗黑色背景......

    AS为我们提供了一个用户配置转移功能,我们可以导出自己的设置,并且在新环境安装AS的时候导入,即可一步实现自己习惯的设置。但是因为我们是首次安装,所以在导入配置窗口选择不导入

    接着会自动打开Android Studio,加载一段时间后,会弹出缺少SDK的提示,我们选择Cancel退出

    就像JAVA的JDK一样,SDK就是Android的运行环境,必须要有。

    接着就弹出欢迎界面,开始让你配置Android Studio,我们选择下一步

    接着就让我们选择一系列的设置,什么是否自定义安装,要什么背景颜色,这些都无关紧要,我没写的无脑next即可

    其中我们关心的是SDK的安装位置,因为SDK一般会占用至少10个G的位置,一般来说我们会把他放在非系统盘。比如我放在了D盘:

    接着到了最后一步点击Finish之后,AS就会帮我们下载安装所需要的SDK,大概耗时3~5分钟,下载安装完SDK,点击最后的Finish,就算安装成功了。


    本文原创首发CSDN,本文链接:https://blog.csdn.net/qq_41464123/article/details/104514467作者博客https://blog.csdn.net/qq_41464123 ,转载请带上本段文字,尤其是脚本之家、码神岛等平台,谢谢配合。


    开启第一个Android应用

    启动AS,因为我们是首次安装AS,我们需要新建一个自己的Android应用,

    AS功能很强大,不仅仅可以新建安卓手机的APP项目,也可以新建平板、电视的项目,而作为刚刚入门Android的我们,新建的是空白的安卓APP应用,选择Empty Activity,即空项目

    之后会让我们设置AS项目的详细信息,至于项目名、包名就随意了,我们又不写什么项目,只是练练手而已。

    保存路径可以选择改一下,设置最小SDK设置为21。

    至于我们安装的是29,这里为什么要设置为21,我觉得有必要解释一下:

    我们用AS写的APP项目,是要在一个叫夜神的第三方模拟器上跑的,人家的API才22,我们的最小API必须要小于等于这个数,否则跑不起来。就好比你拿着21世纪的电子产品,跟19世纪的人去用,人家不会用。

    点击Finish之后,AS会自动帮我们创建好项目,我们可以看到如下界面:

    左边是我们的项目结构,在入门阶段,我们只需要关注这两个文件,MainActivity.java是所谓的后端,即实现业务逻辑的部分;activity_main.xml就是所谓的前端,是处理界面的部分。

     我们来看AS自动生成的activity_main.xml具体代码:

    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello World!"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    
    </androidx.constraintlayout.widget.ConstraintLayout>

    前面的是xml文件的基本配置,整个界面是用ConstraintLayout布局

    TextView是一个文本框组件,用于显示Hello world!文本

    layout_width/layout_height分别是该组件的宽度高度

    wrap_content代表包裹自身内部组件的大小,即里面的东西有多大,我就有多大

    text是文本框的文字,我们可以修改为自己喜欢的文字,比如自己姓名的简写


    接着来看看MainActivity.java

    package com.example.myapplication;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.os.Bundle;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    }
    

    这个类继承自AppCompatActivity,onCreate方法是在该类生成的时候执行的生命周期方法。

    方法内两行代码即显示刚刚的xml文件

     

    运行自己的项目

    要想运行自己的项目,要么使用自带的模拟器,要么使用第三方的模拟器。

    一般来说,第三方模拟器的性能会优于自带的模拟器,我们以夜神为例。

    先从夜神模拟器官网下载,跟安装QQ一样,正常安装即可。

    接着我们打开夜神模拟器,稍等半分钟时间,会发现AS自动和夜神链接,我们可以看到AS中:

    接着我们单击右上方的绿色三角形(运行按钮),跑起来

    这样我们就算Android初步入门吧,接着我还会写基础班、进阶版等等......

    如有不足之处,欢迎指出,谢谢!

    如果电脑前的你,出现了不太一样的界面,欢迎评论指出,我看到后会私下解决。

    展开全文
  • Android常用框架

    万次阅读 2019-05-06 17:10:14
    1.缓存框架     1.1DiskLruCache:Java实现基于LRU的磁盘缓存,DiskLruCache不是google官方所写,但是得到了官方推荐,DiskLruCache没有编写到SDK中去,如需使用可直接copy这个类到项目中去。...

    常用框架
    1.缓存框架
        1.1DiskLruCache:Java实现基于LRU的磁盘缓存,DiskLruCache不是google官方所写,但是得到了官方推荐,DiskLruCache没有编写到SDK中去,如需使用可直接copy这个类到项目中去。使用场景:如“清除缓存”,DiskLruCache一句话就可以搞定!
    github https://github.com/JakeWharton/DiskLruCache
    作者:JakeWharton
    使用:implementation ‘com.jakewharton:disklrucache:2.0.2’
        1.2LruCache:Android 3.1的时候出现的,一般我们为了兼容低版本会使用v4包下的。LruCache是一种缓存策略,持有的是强引用,但是会控制在一个峰值下。它内部维护了一个队列,每当从中取出一个值时,该值就移动到队列的头部。当缓存已满而继续添加时,会将队列尾部的值移除,方便GC。LruCache用于内存缓存,在避免程序发生OOM和提高执行效率有着良好表现。
    2.图片加载
        2.1Android Universal Image Loader:UIL曾经的图片加载框架王者,android开发老手都用过它。提供了大量配置方式,图片加载状态的回调(成功,失败,进行中),加载动画等;以及提供了移动端图片加载框架的缓存思路:三级缓存策略 sd卡-内存-网络;
    github https://github.com/nostra13/Android-Universal-Image-Loader
    作者 nostra13
    使用:
    implementation ‘com.nostra13.universalimageloader:universal-image-loader:1.9.5’
        2.2Picasso: 强力的图片下载、缓存框架。
    更强调图片下载,你可以将picasso集成进你的项目中,你也可以结合gilde和UIL与picasso,三者一齐封装至你的项目中,按需所用。
    github https://github.com/square/picasso
    作者 square团队
    使用:
    implementation ‘com.squareup.picasso:picasso:2.5.2’
        2.3Fresco: 可以管理图片内存的框架
    在管理图片内存领域上有着它的一片天地,渐进式加载、加载gif。
    官网地址: https://www.fresco-cn.org/
    github https://github.com/facebook/fresco
    作者 facebook
    使用:
    implementation ‘com.facebook.fresco:fresco:0.12.0’
    下面的依赖需要根据需求添加:
    // 在 API < 14 上的机器支持 WebP 时,需要添加
    implementation 'com.facebook.fresco:animated-base-supp
        2.4Glide: 是一款专注于提供流畅划动能力的“图片加载和缓存框架”
    图片加载类框架排名第一的框架,google 在2014开发者大会上演示的camera app就是基于gilde框架开发的
    地址:
    github https://github.com/bumptech/glide
    作者 Bump Technologies团队
    使用:
    implementation ‘com.github.bumptech.glide:glide:4.5.0’
    3.图片处理
        3.1 Picasso-transformations: Picasso提供多种图片变换的库。
    地址:github https://github.com/wasabeef/picasso-transformations
    作者 square团队
    使用:
    implementation ‘jp.wasabeef:picasso-transformations:2.1.0’
    // If you want to use the GPU Filters
    implementation ‘jp.co.cyberagent.android.gpuimage:gpuimage-library:1.4.1’
         3.2Glide-transformations: 为众多著名图片加载框架(glide,Picasso,Fresco等)提供图片形状变幻能力的框架 。
    github https://github.com/wasabeef/glide-transformations
    作者:Daichi Furiya
    使用:
    implementation ‘jp.wasabeef:glide-transformations:2.0.2’
    // If you want to use the GPU Filters
    implementation ‘jp.co.cyberagent.android.gpuimage:gpuimage-library:1.4.1’
        3.3Android-gpuimage: 一款基于OpenGL的图片渲染引擎,Android版的android-gpuimage就提供多达70多种图片渲染效果,你还在好奇美图秀秀是如何实现图片变幻的?有了它,一 切都不是问题。如果你是美图工具类的工程师,此框架的建设思路也会对你大有裨益。
    github:https://github.com/CyberAgent/android-gpuimage
    作者:CyberAgent 团队
    使用:
    implementation ‘jp.co.cyberagent.android.gpuimage:gpuimage-library:1.4.1’
    4.网络请求
         4.1Android Async HTTP: 一款基于Http协议的异步请求的网络框架。
    github https://github.com/loopj/android-async-http

    作者:James Smith

    使用:
    implementation ‘com.loopj.android:android-async-http:1.5.0-SNAPSHOT’
         4.2AndroidAsync: 异步Socket,HTTP(客户端+服务器),WebSocket,和socket.io库。基于NIO而不是线程。
    地址:https://github.com/koush/AndroidAsync/tree/master/AndroidAsync/src/com/koushikdutta/async
    使用:
    implementation ‘com.koushikdutta.async:androidasync:2.+’
        4.3OkHttp : okhttp是一款基于HTTP和HTTP2.0协议的网络框架,服务于java和android客户端,专注网络请求的安全高效。
    地址 http://square.github.io/okhttp/
    github https://github.com/square/okhttp
    作者:square团队
    使用:
    implementation ‘com.squareup.okhttp3:okhttp:3.8.0’
        4.4Retrofit:
    一款类型安全的网络框架,基于HTTP协议,服务于Android和java语言。
    Retrofit2.0开始内置okhttp框 架,Retrofit专注封装接口完成业务需求,okhttp专注网络请求的安全高效
    地址
    github https://github.com/square/retrofit
    作者:square团队
    使用:
    implementation ‘com.squareup.retrofit2:retrofit:2.3.0’
        4.5Volley: google推荐使用的Android端网络请求框架
    github https://github.com/google/volley
    作者:google
    5.数据解析:
        5.1Gson:Gson是谷歌官方推出的支持 JSON – Java Object 相互转换的 Java序列化/反序列化 库。
    地址:
    github https://github.com/google/gson
    作者:google
    使用:
    implementation ‘com.google.code.gson:gson:2.8.4’
        5.2Jackson: 相对来说比较高效,在项目中主要使用Jackson进行JSON和Java对象转换。
    地址:
    github https://github.com/codehaus/jackson
    使用:
    compile ‘org.codehaus.jackson:jackson-mapper-asl:1+’
    compile ‘org.codehaus.jackson:jackson-core-asl:1+’
        **5.3Fastjson:**一款基于json解析、生成的框架,快速是它最大的特性,阿里巴巴的出身保证了代码的质量和优越。
    github https://github.com/alibaba/fastjson
    作者:alibaba
    使用:
    compile ‘com.alibaba:fastjson:1.1.58.android’
        5.4:HtmlPaser 一个用来解析 HTML 文档的开放源码项目,提供了强大的 API 实现对 Html 网页进行信息转换 (Transformation) 以及从 HTML 文档里提取 (Extraction) 感兴趣的信息。它具有小巧、快速、使用简单的特点,并且经过严格的测试。
        5.5Jsoup: 方便的增删查改HTML中的元素
    地址:
    https://github.com/jhy/jsoup
    使用:
    compile ‘org.jsoup:jsoup:1.9.2’

    6.数据库
        6.1OrmLite: JDBC和Android的轻量级ORM java包
    地址:
    https://github.com/j256/ormlite-core
    https://github.com/j256/ormlite-android
    使用:
    compile ‘com.j256.ormlite:ormlite-android:5.0’
    compile ‘com.j256.ormlite:ormlite-core:5.0’
         6.2Sugar : 用超级简单的方法处理Android数据库,不用写复杂的sql语句,而用简单的API即可完成创建和操纵数据
    地址:
    https://github.com/chennaione/sugar
    使用:
    compile ‘com.github.satyan:sugar:1.3’
        6.3GreenDAO: 是一款高效、快速的SQLite型数据库
    ,号称Android最快的关系型数据库支持数据库加密 greendao支持SQLCipher进行数据库加密
    github https://github.com/greenrobot/greenDAO
    使用:
    classpath ‘com.android.tools.build:gradle:2.3.1’
    classpath ‘org.greenrobot:greendao-gradle-plugin:3.2.2’ // add plugin
         6.4ActiveAndroid: 极大的简化数据库的使用,使用面向对象的方式管理数据库,告别手写SQL历史。每一个数据库表都可以映射为一个类。
    地址:
    https://github.com/pardom-zz/ActiveAndroid
    使用:
    compile ‘com.michaelpardo:activeandroid:3.1.0-SNAPSHOT’
         6.5SQLBrite: 响应式数据库框架,对 Android 系统的SQLiteOpenHelper和 ContentResolver 的轻量级封装,配合Rxjava使用。
    https://github.com/square/sqlbrite
    使用:
    compile ‘com.squareup.sqlbrite:sqlbrite:0.7.0’
    在处理线程问题时,由于要使用到RxAndorid中相关的类,所以我们还要引入
    compile ‘io.reactivex:rxandroid:1.1.0’
        6.6Realm: 是一款移动端数据库框架,核心数据引擎C++打造,比普通的Sqlite型数据库快的多。
    地址:github https://github.com/realm/realm-java
    作者:Realm团队
    使用:
    compile ‘org.jsoup:jsoup:1.11.3’
    7.依赖注入
        7.1ButterKnife: 提供了一种能力——使用注解生成模板代码,将view与方法和参数绑定。帮助开发者省却了频繁findviewbyid的烦恼,最新的Butter Knife还提供了onclick绑定以及字符串的初始化。
    github:https://github.com/JakeWharton/butterknife
    作者:JakeWharton ,也是square团队成员之一
    使用:
    compile ‘com.jakewharton:butterknife:8.6.0’
    annotationProcessor ‘com.jakewharton:butterknife-compiler:8.6.0’
         7.2Dagger2 : 一款通过依赖注入降低程序间耦合的开发框架,如今google团队接手的dagger2版本,强力开发团队保证了代码在 设计上的优越性
    github :https://github.com/google/dagger

    作者:google
    使用:
    dependencies {
    compile ‘com.google.dagger?2.x’
    annotationProcessor ‘com.google.dagger:dagger-compiler:2.x’
    }
    //If you’re using classes in dagger.android you’ll also want to include:
    compile ‘com.google.dagger:dagger-android:2.x’
    compile ‘com.google.dagger:dagger-android-support:2.x’
    annotationProcessor ‘com.google.dagger:dagger-android-processor:2.x’
        7.3AndroidAnotations : 可以加速Android的开发。它负责管道,让你专注于真正重要的事情。通过简化代码,它简化了代码的维护。
    https://github.com/androidannotations/androidannotations
    使用:
    dependencies {
    annotationProcessor “org.androidannotations:androidannotations:2.7”
    compile “org.androidannotations:androidannotations-api:2.7”
    }
    8.图表
        8.1WilliamChart: Android图表库,已支持的功能,折线图
    ,条形图,横向条形图,堆叠柱形图,横向堆叠柱形图
    https://github.com/diogobernardino/WilliamChart
    使用:
    compile ‘com.diogobernardino:williamchart:2.2’
        8.2HelloCharts: 一个用来生成统计图表的三方库,目前支持折线图、柱状图和饼状图等常见图表。支持缩放、滑动和动画效果。
    https://github.com/lecho/hellocharts-android
    使用:
    compile ‘com.github.lecho:hellocharts-library:1.5.8@aar’
        8.3MPAndroidChart : 快速、简洁。强大著称的图表框架
    github https://github.com/PhilJay/MPAndroidChart
    作者:PhilJay
    使用:
    compile ‘com.github.PhilJay:MPAndroidChart:v3.0.2’
    9.后台处理
        9.1Tape: Android和Java中使用的与队列类相关的集合类,轻快的、事务性的、基于文件的FIFO(先进先出)

    https://github.com/square/tape
    使用:
    compile ‘com.squareup.tape2:tape:2.0.0-beta1’
        9.2Android Priority Job Queue: 提供后台任务管理能力的框架,不论是Activity重新加载、Service使用线程池时的任务优先级和并发问题,都不要担心,Job Manage会照顾优先级,持久性,负载平衡,延迟,网络控制,分组,优秀的多线程管理能力。
    github https://github.com/yigit/android-priority-jobqueue
    作者:Yigit Boyar
    compile ‘com.birbit:android-priority-jobqueue:2.0.1’
    10. 事件总线
        10.1EventBus: 是一款本地组件间通信框架,在大型项目的Activities,fragments,Threads,Services都可以看到它的使用场景,尽管 EventBus在向未创建的组件传递事件时有些局限,仅适合在“活着的”组件间传递消息,但仍不妨碍它活跃在各个大型项目各个场景里。
    github https://github.com/greenrobot/EventBus
    作者 greenrobot
    使用:
    compile ‘org.greenrobot:eventbus:3.0.0’
        10.2Otto: 一款老旧且强大的事件总线框架。是 square团队早先推出的事件响应型框架,淘宝app的事件驱动也是基于此框架封装的,如今square已经建议开发者采用RxJava RxAndroid来代替otto了。
    github https://github.com/square/otto
    作者:square
    使用:
    compile ‘com.michaelpardo:activeandroid:3.1.0-SNAPSHOT’
    11. 响应式编程
        11.1RxJava: 一款Android客户端组件间异步通信的框架,RxAndroid是用来取代AnsyTask的。
    github https://github.com/ReactiveX/RxAndroid
    作者 JakeWharton
    使用:
    compile ‘io.reactivex.rxjava2:rxandroid:2.0.1’
    compile ‘io.reactivex.rxjava2:rxjava:2.1.0’
        11.2RxJavaJoins: RxJava提供Joins操作(排列组合效果)
    https://github.com/ReactiveX/RxJavaJoins
    使用:
    compile ‘io.reactivex:rxjava-joins:0.22.0’
        11.3RxAndroid: 一款Android客户端组件间异步通信的框架
    https://github.com/ReactiveX/RxAndroid
    使用:
    compile ‘io.reactivex.rxjava2:rxandroid:2.0.1’
    compile ‘io.reactivex.rxjava2:rxjava:2.1.5’
        **11.4RxBinding:**一款提供UI组件事件响应能力的框架,通过RXBinding,你将理解响应式编程的快乐,让项目里的事件流程更清晰。
    github https://github.com/JakeWharton/RxBinding

    作者:JakeWharton
    使用:
    Platform bindings:
    compile ‘com.jakewharton.rxbinding2:rxbinding:2.0.0’
    ‘support-v4’ library bindings:

    compile ‘com.jakewharton.rxbinding2:rxbinding-support-v4:2.0.0’
    ‘appcompat-v7’ library bindings:

    compile ‘com.jakewharton.rxbinding2:rxbinding-appcompat-v7:2.0.0’
    ‘design’ library bindings:

    compile ‘com.jakewharton.rxbinding2:rxbinding-design:2.0.0’
    ‘recyclerview-v7’ library bindings:

    compile ‘com.jakewharton.rxbinding2:rxbinding-recyclerview-v7:2.0.0’
    ‘leanback-v17’ library bindings:

    compile ‘com.jakewharton.rxbinding2:rxbinding-leanback-v17:2.0.0’
        11.5Agera: google专门推出一套响应式编 程框架服务于Android开发者,相比于之响应式编程框架榜首的 RxJava RxAndroid,它更轻量,两者最大的不同点在于agera基于push event、pull data (VS Rx系列 push data)。
    github https://github.com/google/agera
    作者:Google
    使用:
    compile ‘com.google.android.agera:agera:1.3.0’
    扩展能力
    compile ‘com.google.android.agera:content:1.3.0’
    compile ‘com.google.android.agera:database:1.3.0’
    compile ‘com.google.android.agera:net:1.3.0’
    compile ‘com.google.android.agera:rvadapter:1.3.0’
    compile ‘com.google.android.agera:rvdatabinding:1.3.0’
    12. Log框架
         12.1Logger: 一款让log日志优雅显示的框架。它最大的亮点是优雅的输出log信息,并且支持多种格式:线程、Json、Xml、List、Map等
    github https://github.com/orhanobut/logger
    作者:Orhan Obut
    使用:
    compile ‘com.orhanobut:logger:2.1.1’
    13. 测试框架
        **13.1Mockito ?*用简洁的API做测试。而且Mockito简单易学,它可读性强和验证语法简洁。
    API文档:http://docs.mockito.googlecode.com/hg/org/mockito/Mockito.html
    https://github.com/mockito/mockito
        **13.2Robotium:**面向Android端的开源自动化测试框架,Robotium结合Android自身提供的测试框架可以对应用程序进行自动化测试。另外,Robotium还支持对WebView的操作。Robotium的核心类是Solo,通过Solo可以对控件进行各种操作。
    https://github.com/RobotiumTech/robotium
        **13.3Robolectric:**一款不依赖于Android设备的单元测试框架。
    github https://github.com/robolectric/robolectric
    作者:robolectric
    使用:
    testCompile “org.robolectric:robolectric:3.3.2”
    14. 调试框架
        **14.1Stetho:**一款提供在Chrome开发者工具上调试Android app能力的开源框架
    ithub https://github.com/facebook/stetho
    使用:
    compile ‘com.facebook.stetho:stetho:1.5.0’
    15. 性能优化
         **15.1LeakCanary :**一款内存检测框架,服务于java和android客户端,最大的特点,只需在应用的apllication中集成,就可以直接使用它;
    github https://github.com/square/leakcanary
    作者 square团队
    使用:
    debugCompile ‘com.squareup.leakcanary:leakcanary-android:1.5.1’
    releaseCompile ‘com.squareup.leakcanary:leakcanary-android-no-op:1.5.1’
    testCompile ‘com.squareup.leakcanary:leakcanary-android-no-op:1.5.1’

        15.2ACRA: 一款提供记录APP崩溃日志能力的框架,acra有足够的能力记录线上APP,并且发回服务端,acra也提供了相当棒的崩溃日志统计服务端框架Acralyzer,cralyzer工作在Apache CouchDB
    github https://github.com/ACRA/acra
    服务端github https://github.com/ACRA/acralyzer
    作者:acra团队

    展开全文
  • 前言 Retrofit发布的2.6.0版本内部支持了kotlin协程中的挂起(suspend)修饰符,这就意味着我们可以跟方便的用Retrofit结合kotlin协程来实现网络请求了。 之前我们都是使用Rxjava2+Retrofit实现网络请求的功能,然后...

    前言

    使用kotlin协程也有一段时间了,给我最大的感受就是完全可以替代Rxjava了,并且写起来更加的简洁。

    6月份Retrofit发布的2.6.0版本内部支持了kotlin协程中的挂起(suspend)修饰符,这就意味着我们可以更加方便的用Retrofit结合kotlin协程来实现网络请求了。
    在这里插入图片描述

    之前我都是使用Rxjava2+Retrofit实现网络请求的功能,然后加入了AutoDispose来实现自动解绑以免发生内存泄漏的问题,感兴趣的可以看看AutoDispose代替RxLifecycle优雅的解决RxJava内存泄漏问题

    那协程有没有自动解绑的东西呢。当然有了
    目前google官方也给我们提供了androidx.lifecycle:lifecycle-viewmodel-ktx的依赖包,给ViewModel中扩展了一个作用域叫viewModelScope

    viewModelScope是一个绑定到当前viewModel的作用域 当ViewModel被清除时会自动取消该作用域,所以不用担心内存泄漏为问题

    那这样一来,我们完全可以使用Retrofit+Coroutines这个方案来代替之前用Retrofit+Rxjava+AutoDispose的方案了。

    话不多说,直接上代码

    我在网上找了个公开的API接口 https://www.apiopen.top/novelApi

    我们就请求这个接口了

    添加依赖

    首先是添加需要的依赖包,如下

        implementation 'androidx.appcompat:appcompat:1.1.0'
        implementation 'androidx.core:core-ktx:1.1.0'
        implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.1"
        implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.1"
        implementation "androidx.lifecycle:lifecycle-extensions:2.1.0"
        implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.1.0"
        implementation "com.squareup.okhttp3:okhttp:4.2.0"
        implementation "com.squareup.retrofit2:retrofit:2.6.1"
        implementation "com.squareup.okhttp3:logging-interceptor:4.2.0"
        implementation "com.squareup.retrofit2:converter-gson:2.6.1"
    

    代码

    在看下面的代码之前,你可能需要先看一下下面几篇文章,如果你都知道的话 直接跳过即可

    ViewModelLiveData 还不是很了解的话先看一下这篇文章
    mvp过渡到mvvm(Android 架构组件)

    关于一些好用的扩展方法,看一下这个
    Kotlin基于RxJava的扩展方法(超级好用)
    这里我们主要是看对数据类的扩展,节省一些无用代码

    关于Retrofit的工厂类这里我就不放出来了,估计大家的代码都差不多,需要的可以看demo,这里我就不再浪费篇幅,直接用了。

    实体类

    响应基类

    data class BaseResp<T>(
        var code: Int = 0,
        var msg: String = "",
        var `data`: T
    )
    

    小说数据实体类

    package com.yzq.coroutineretofitmvvm.bean
    
    
    import com.google.gson.annotations.SerializedName
    
    data class Fiction(
        var bid: String = "",
        var bookname: String = "",
        var introduction: String = "",
        @SerializedName("book_info")
        var bookInfo: String = "",
        var chapterid: String = "",
        var topic: String = "",
        @SerializedName("topic_first")
        var topicFirst: String = "",
        @SerializedName("date_updated")
        var dateUpdated: Int = 0,
        var author: String = "",
        @SerializedName("author_name")
        var authorName: String = "",
        @SerializedName("top_class")
        var topClass: String = "",
        var state: String = "",
        var readCount: String = "",
        var praiseCount: String = "",
        @SerializedName("stat_name")
        var statName: String = "",
        @SerializedName("class_name")
        var className: String = "",
        var size: String = "",
        @SerializedName("book_cover")
        var bookCover: String = "",
        @SerializedName("chapterid_first")
        var chapteridFirst: String = "",
        var chargeMode: String = "",
        var digest: String = "",
        var price: String = "",
        var tag: List<String> = listOf(),
        @SerializedName("is_new")
        var isNew: Int = 0,
        var discountNum: Int = 0,
        @SerializedName("quick_price")
        var quickPrice: Int = 0,
        var formats: String = "",
        @SerializedName("audiobook_playCount")
        var audiobookPlayCount: String = "",
        var chapterNum: String = "",
        var isShortStory: Boolean = false,
        var userid: String = "",
        @SerializedName("search_heat")
        var searchHeat: String = "",
        @SerializedName("num_click")
        var numClick: String = "",
        @SerializedName("recommend_num")
        var recommendNum: String = "",
        @SerializedName("first_cate_id")
        var firstCateId: String = "",
        @SerializedName("first_cate_name")
        var firstCateName: String = "",
        var reason: String = ""
    )
    

    定义请求接口

    这个没什么好说的,需要注意的就是我们的方法前面用 suspend 修饰

    interface ApiService {
        @GET("https://www.apiopen.top/novelApi")
        suspend fun getFictions(): BaseResp<List<Fiction>>
    }
    

    用于解析响应数据的扩展方法

    /*数据解析扩展函数*/
    fun <T> BaseResp<T>.dataConvert(): T {
        if (code == 200) {
            return data
        } else {
            throw Exception(msg)
        }
    }
    

    ViewModel

    注释也很详细了,这里就不多说了

    class NetViewModel : ViewModel() {
        var fictions = MutableLiveData<List<Fiction>>()
        fun getFictions() {
            /*viewModelScope是一个绑定到当前viewModel的作用域  当ViewModel被清除时会自动取消该作用域,所以不用担心内存泄漏为问题*/
            viewModelScope.launch {
                try {
                    /*withContext表示挂起块  配合Retrofit声明的suspend函数执行 该块会挂起直到里面的网络请求完成 最一行就是返回值*/
                    val data = withContext(Dispatchers.IO) {
    
                        /*dataConvert扩展函数可以很方便的解析出我们想要的数据  接口很多的情况下下可以节省不少无用代码*/
                        RetrofitFactory.instance.getService(ApiService::class.java)
                            .getFictions().dataConvert()
                    }
    
                    /*给LiveData赋值  ui会自动更新*/
                    fictions.value = data
    
                } catch (e: Exception) {
    
    
                    /*请求异常的话在这里处理*/
                    e.printStackTrace()
    
                    Log.i("请求失败", "${e.message}")
    
                }
    
    
            }
        }
    
    
    }
    

    Activity

    Activity中代码就很简单了,主要就是创建ViewModel示例,更新ui

    
    class MainActivity : AppCompatActivity() {
        private lateinit var netViewModel: NetViewModel
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
            /*创建viewmodel*/
            netViewModel = ViewModelProviders.of(this).get(NetViewModel::class.java)
    
            btn.setOnClickListener {
                /*请求数据*/
                netViewModel.getFictions()
            }
    
            /*数据发生变化时更新ui*/
            netViewModel.fictions.observe(this, Observer {
                tv.text = Gson().toJson(it)
            })
        }
    }
    
    

    下面我们来看看运行结果:

    在这里插入图片描述

    可以看到,网络请求的功能已经实现了。

    那对比RxJava的实现方式,你觉得哪种方式更好呢?

    好了,本篇文章到此结束。

    demo


    如果你觉得本文对你有帮助,麻烦动动手指顶一下,算是对本文的一个认可,如果文中有什么错误的地方,还望指正,转载请注明转自喻志强的博客 ,谢谢!

    展开全文
  • 文章目录效果图使用的依赖版本retrofit封装类网络相关数据结构定义协程apiViewModel层UI层调用 效果图 全文链接 使用的依赖版本 同时启用databinding ... implementation 'androidx.core:core-ktx:1.1.0' imple...
  • 借助《玩Android》网站提供的开放API开发Android客户端。项目全部迁移Androidx,使用kotlin语言开发,通过Android Architecture Components实现MVVM架构。 项目中实践了ViewModel、LiveData、View Data Binding、...
  • 电影资讯App是一个纯练手项目,使用了系统API28,全部是基于Androidx包下的。使用Kotlin语言开发,使用了Android JetPack中的LiveData、ViewModel以及Room。为了学习Kotlin和巩固自定义View和ViewGroup,这个项目是...
  • MVVM架构模式(Jetpack) 引入lib,APP模块:build.gradle dependencies { // 添加Jetpack中架构组件的依赖,注意viewmodel... api "androidx.lifecycle:lifecycle-livedata:${rootProject.ext.lifecycle}" api "a...
  • 总是听到有人说AndroidX,到底什么是AndroidX?

    万次阅读 多人点赞 2019-08-26 08:06:59
    Android技术迭代更新很快,各种新出的技术和名词也是层出不穷。不知从什么时候开始,总是会时不时听到AndroidX这个名词,这难道又是什么新出技术吗?相信有很多朋友也会存在这样的疑惑,那么今天我就来写一篇科普...
  • AndroidX了解一下

    万次阅读 多人点赞 2018-08-06 09:25:31
    1.前言 我选取了几个常用依赖库,我们可以看看变化: ... AndroidX build artifact ... com.android.support:support-compat ... androidx.core:core:1.0.0+ ... com.android.support:appcompat-v7 ... androidx.appco...
  • 国际版TikTok使用教程(2020更新)

    万次阅读 多人点赞 2019-07-30 10:35:04
    如果你是Android用户,先安装下面3个应用 (不要担心安装太多应用,最后只需要保留一个应用在手机上) 1: Tiktok: https://www.lanzous.com/i42lshc 2: Xposed框架: https://www.lanzous.com/i42lslg 3: SC防火墙: ...
  • android studio安装教程

    万次阅读 多人点赞 2019-07-16 12:23:50
    百度搜索Android studio,或者直接输入http://www.android-studio.org进入这个页面 根据这个下载相应的安装包或者压缩包。 这里演示安装64位的android studio 下载完成后直接双击安装包,就会出来...
  • android studio的安装,史上最详细(超多图)!!

    万次阅读 多人点赞 2019-06-11 14:10:36
    android studio的安装,史上最详细!!欢迎前来观看,感觉有用就点波关注吧!custom 欢迎前来观看,感觉有用就点波关注吧! 1、首先下载Android studio安装包,可以从 http://www.android-studio.org/ 下载最新...
  • Android Studio安装及环境配置教程

    万次阅读 多人点赞 2019-04-25 20:50:42
    前言: 首先需要确定好电脑是否有安装java环境,即是否安装有JDK, 验证方法:直接电脑桌面win+R输入cmd,然后在黑窗口中分别输入java 、javac 、javadoc、java -version+ enter键(注意是输入一个指令按一次enter...
  • 【Android】AndroidStudio3.0+保存并查看SQLite数据库文件

    万次阅读 多人点赞 2018-07-09 07:53:57
    吐槽一下: 我从知乎、简书、CSDN、掘金、GitHub搜遍了,方法是有,可是那个软件收费。于是迫不得已,我就趁着月黑风高,翻过墙头,Google了一下,也是,找了老半天,要么是我关键词用的不对,要么就是那些大神们...
  • Android Studio 3.5 汉化包

    万次阅读 多人点赞 2017-10-31 16:34:19
    Android Studio 3.0-3.1 汉化包 CLion 2018.1 汉化包 GoLand 2017.3.2-2018.1 汉化包 IntelliJ IDEA 2017.3-2018.1 汉化包 PhpStorm 2017.3-2018.1 汉化包 PyCharm 2017.3-2018.1 汉化包 RubyMine 2017....
  • Android studio 3.5安装详解

    万次阅读 多人点赞 2019-08-28 16:14:28
    准备:已装过要卸载,且删除C:\user\yourname\下.android,.AndroidStudio,gradle3个文件夹。 1.1 cmd命令窗口,ping dl.google.com,得到ip203.208.43.101,把dl-ssl….和dl…都指向这个IP,具体:...
  • 完整版—Android studio入门教程

    万次阅读 多人点赞 2017-10-17 12:54:34
    AS的安装及第一个AS中android项目的搭建 前言:前段时间公司搞了个 "校企合作" 的项目,要求公司人员去学校对学生进行阶段性的专业培训,荣幸的我被派去当了回“老师”;哈哈,真的有点“打肿脸充胖子”的感觉;...
  • Android第一天 安装Android Studio 3.5

    万次阅读 多人点赞 2018-03-09 11:26:38
    1.获取Android Studio 3.5 方式1:进入Android Developers官方网站下载; 方式2:进入Android Studio中文社区下载(当前最新为3.4.1); 方式3:进入Android Dev Tools网站下载。 高速通道:(小白直接戳以下...
  • 下载: Anderson Studio是Google为Android提供的官方IDE工具,下载地址:http://www.android-studio.org/ 安装环境要求 : 其中JDK的最低版本是1.7,所以系统空闲内存至少2GB。...以android-studio-id...
  • Android Studio 和 SDK 下载、安装和环境变量配置

    万次阅读 多人点赞 2016-12-02 10:00:57
    win10下 Android Studio 和 SDK 下载、安装和环境变量配置   ------made by siwuxie095 1、首先必须安装Java JDK (Java JDK下载、安装和环境变量配置,传送阵:点击开始传送) 2、本人电脑系统
  • 使用AndroidStudio开发一个简易的音乐播放器

    万次阅读 多人点赞 2018-03-06 18:03:42
    一、软件成品展现: 1.登录首页界面 2.在线音乐界面 ...1.编写登录首页界面,完成对手机中已下载的音乐文件进行读取,获得每个音乐文件的专辑名称,专辑图片,歌唱者并展现出来。...2.编写在线音乐界面,本来想...
  • Android Studio设置HTTP代理(可用)

    万次阅读 2018-06-14 10:29:32
    官方下载 Android Tools Project Site Android开发工具的网站,上面链接是...大陆的墙很厚很高,初次安装AndroidStudio下载SDK等必定失败,设置代理方法如下: 1. 到android studio安装目录,打开bin目录,编辑id
  • Android studio配置国内镜像源

    万次阅读 2019-01-20 11:23:51
    PS:网上看到的AS配置国内镜像源的博客版本有点老了,就想着做个比较新的博客了 推荐的几个国内镜像源地址: 1、东软信息学院(笔者当前在用) mirrors.neusoft.edu.cn ...2、北京化工大学 ...3、中国科学院开源协会 ...
  • Android Studio安装配置(详细版)

    万次阅读 多人点赞 2018-09-13 12:32:04
    Android studio安装配置(相关介绍) 一. 前景介绍: 在开发Android程序之前,首先要在系统中搭建开发环境。Google公司已经发出声明,到2015年年底不再对Ecplise提供支持服务,Android Studio将全面取代Ecplise。 ...
  • Android studio 入门教程(案例)

    万次阅读 多人点赞 2018-05-08 18:24:29
    1.创建一个Android项目,点击File -&gt;New-&gt;New Project, 其中的open是打开一个Android项目 ...3.选择Android 虚拟机的版本,版本越低运行...4.选择Android 的模板,选择基础类android 的空模板Empty ...
  • Android Studio 下载安装教程

    万次阅读 多人点赞 2019-09-03 16:02:10
    Android Studio —— DOWNLOAD —— DOWNLOAD ANDROID STUDIO(来进行下载,下载的是最新版本) 勾选同意协议,点击开始下载 三 安装Android Studio 1.双击安装软件,打开后点击Next继续下一步;...
  • android studio环境配置

    万次阅读 多人点赞 2018-08-09 13:18:20
    今天,简单讲讲Android studio如何安装和配置好环境。 昨天,讲了jdk环境的配置,如果没有配置好jdk,是不能安装Android studio的。如果已经配置好jdk环境,那么直接学习Android studio 的环境配置。这里提一下,...

空空如也

1 2 3 4 5 ... 20
收藏数 2,770,513
精华内容 1,108,205
关键字:

android