阿里云播放器调试心得,android的学习笔记

   接触android接近一个月,摸爬滚打实属不易,加上又有诸多琐事缠身,让原本定下的计划迟迟没有完成。。

   对于基础知识的急于求成,处于一种有一些功利化的学习心态,所以适时的复习显得空前重要。。

  谈谈对安卓的理解,不论对错,只对自己的理解做一些记录:

    安卓于2006年左右就有这个想法貌似,后来在2008年的时候,安卓1.0问世(2008年发生的事情特别多),同时期发布的移动操作系统还有ios,windowsphone。   之后势如破竹,记得我2012年买了一个触屏智能手机,当时的安卓版本貌似是2.3来着。。。现如今,安卓已经到了8了。。   其实有几个版本老是分不清,如android sdk版本,好像也叫做api版本,android 版本,avd版本等等。。   与之类似的还有  gradle的版本,以及gradle plugin的版本。。。  傻傻分不清楚。

    然后来说一下安卓开发,较早一两年前,我那时候一直在用eclipse做实践,曾经就用它来弄了弄安卓,照着网上的例子敲了敲一个计算器,但是由于当时零基础所以并没有社么用。  不过配置的过程我是经过的,比如配置sdk,下一些eclipse的插件,等等,当时觉得是十分的痛苦,现在则觉得十分繁琐,而且由于墙的关系,不能得到很好的支持。   现在用的是idea的集成开发环境,并且2015年还是什么时候吧,官方推荐使用的是 android sdk,是基于idea 的。   不得不说,确实方便了很多。   只需要取下载这个软件,无脑下一步安装。。 当然一些前提条件还是要有的,比如java环境,后续还需要gradle的支持,很多时候也离不开git。  总之不需要自己去配sdk,不需要自己去下一些集成环境的插件,非常的爽快!    

   有利也有弊,利自然就是开发环境准备起来方便很多。  弊就是对开发的步骤反而陌生了,比如哪个模块负责什么任务之类的。  举个简单例子,当连真机调试的时候可能会出现一些莫名奇妙的问题,这时候就需要这些知识了。   希望每个人使用的时候都是完美的就好了。   在开发过程中,用到的依赖主要有:  sdk中的源码,它的构成类似于java,为开发提供先觉条件;   jdk中的lang包中的类或者接口,提供一些开发的基础支持,因为android开发时基于java的。    集成环境下,对资源文件的编译引用,这个是集成环境做的,跟用户没有太大关系,但是又是必须的。  现在看来,它非常优美的实现了低耦合。。 

   程序写完后,需要进行编译。   java都要编译为字节码,所以android自然也需要进行编译。。   它的编译是用过集成环境下的gradle插件完成的。   gradle插件的编译应该是利用了第三方的编译工具,因为maven编译的时候也是依赖了第三方的编译工具,它们是等价的。。   编译完成后,形成的整个程序大小是很小的,也就是说,sdk(上百兆),jdk的一些相关类等 并没有一股脑的被使用,它们提供的是一种生态。。      就像java编码后一样,他要到其他的地方运行,那么宿主环境下必须具备jvm虚拟机才行。   android是同样的道理。。    

   所以在我们运行程序时候,有两个途径可选:   android虚拟机,或者  真机。。。     虚拟机和真机中提供了相应的宿主环境,我们安装的程序安装的只是针对于宿主适用的一小段应用程序。。     不得不说android虚拟机太占内存了,我有次调试直接死机,因为我本身电脑内存不是很大。  越高版本的虚拟机越耗费内存。。     从另一个层面而言,真机中其实也是一个虚拟机在执行代码,只是物理载体不一样。。

   看java程序的时候,我们习惯于每次去寻找main函数所在的类,也就是默认的入口类。。   

   而在看android项目源码的时候,则应该从androidManifest.xml文件入口,去找具有 MAIN动作的意图过滤器,它所在的activity便是这个程序的入口。。   AndroidManifest.xml相当于android应用程序  与系统的通道。。。    它本身不算是源码,但是却充当了这样一个角色。。  找到了入口,接下来的事情则是顺利成章的。    在我看的阿里云播放器的例子中,使用了一个项目,多个模块的构成方式,所以gradle的使用也是需要专门去了解的,很强大,很优秀。

   由于android的出现时间,决定了它不论从设计模式方面,还是程序结构构成方面,都有显著的优越性。。  android的开发大致可以分为两个部分吧,视图层,逻辑业务层。   它们二者会通过某种方式绑定,以达到业务目的。。   并且,它的是视图实际方面是与对象关系呈现的,只要感兴趣,就可以追到最底层的实现,同时经过这么多版本的迭代,已经非常完善,使用方式也是比较固定的。  可以高定制化,也是它的巨大优势,同时将之与业务逻辑分开,有利于解耦。。  

   android在开发的时候,大量用到了监听器,回调等等可以很好解耦的方式,使用起来也很方便,设计起来也很畅快。。所以它是更好的面向应用的开发方式我觉得。。

   android的基础知识中,经常听说四大组件,六大布局,五大存储。。  我也去看过了一些,不过暂时还没有。。  我想记录的是自己平时遇到几个类:

   activity:   代表一个可视化视图,代表屏幕的一屏。  具有自己的生命周期。  这些所有的生命周期方法就像具有很多的入口,通过系统的系统中断调用应该是。。   每个activity 都要经过  oncreate()方法,通常要与视图层绑定。

   Fragement,代表某一个部分视图,通过onCreateView()初始化,也具有相应的生命周期。

   ViewGroup,继承自View,子类有那几个布局。   它们是通过实例化方法来初始化的,就代表一个视图。。 跟activity等有些区别。  不具备显著的生命周期方法。  此外需要注意,可以自定义view,并且可以在view中就定义好一些初始化的事件,数据的绑定等等操作。。。

  Dialog,对话框,通过实例化方法调用,通过回调方法关闭。。

===============================================================================================

   要记得理解基本就这么多了。  接下来记一下阿里云的这个视频demo。因为隔两天我又会忘了,又得花时间去重新看一遍。。

它的流程是这样的:

    进入引导页-》进入功能页--->所有的卡片都具有点击事件-->点击后跳到相应的activity。   在这个过程中,从服务器中请求一些测试数据.  对每个卡片的又相应的点击事件。  若点击房间,可以观看直播,若点击直播,可以直播。。   这里想说的是关于摄像头的渲染。。   摄像头的渲染都是通过父类完成的,子类完成的是相应的功能外观的实现。。。   这个过程中,用到了很多的监听器机制,另外这个项目是没有对视频进行推流处理的。。    大体的功能就这些,直播的功能也就这些。   基础不够直接上这个真是够吃力的,希望过一段时间有所进展与突破。。

猜你喜欢

转载自blog.csdn.net/qq_36285943/article/details/81236084