android架构

Android Studio学习笔记

爱⌒轻易说出口 提交于 2019-12-05 12:40:48
  我是通过哔哩哔哩的极客开发者up主的视频学习的,讲得还算很详细,对于我这种没有学习Java的人来说还说能听得懂。在此特别感谢up主!   今天学习了Android Studio的环境搭建,主要要安装JDK和JRE。然后是修改环境变量。然后就是安装Android Studio,带虚拟机。安装了Android Studio之后就有安装SDK,我是通过下载的方式进行安装,中途等了挺久时间。安装好了后建立工程就有各种报错,对于不懂英文的我,过程感觉十分痛苦,每一次的错误我都是通过百度翻译进行查阅,然后在百度上搜索遇到同样问题的案例,照着他们的提示的方法进行了一系列的修改,费了九牛二虎之力后,终于我的开发环境搭建好了。   接下来我学习了up主初次录制的视频——编写生日贺卡APP,这看似简单的APP,或许对于一些大佬来说不算什么,但对于刚入门的小白来说,还算不错,因为至少知道了那么回事。   在这里说下这个视频我学到的   1)控件TextView(文本框)      android:layout_margin="20dp"            //边框距20      android:textSize="22dp"              //字体大小      android:textColor="@android:color/holo_red_light"   /

Android消息机制

别等时光非礼了梦想. 提交于 2019-12-05 10:39:48
一、消息机制概述 1.消息机制的简介 在Android中使用消息机制,我们首先想到的就是Handler。没错,Handler是Android消息机制的上层接口。Handler的使用过程很简单,通过它可以轻松地将一个任务切换到Handler所在的线程中去执行。通常情况下,Handler的使用场景就是更新UI。 如下就是使用消息机制的一个简单实例: 1234567891011121314151617181920212223 public class extends android.app. { private Handler mHandler = new Handler(){ public void handleMessage(Message msg) { super.handleMessage(msg); System.out.println(msg.what); } }; public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) { super.onCreate(savedInstanceState, persistentState); setContentView(R.layout.activity_main); new Thread(new Runnable() {

Qualcomm Camera基础

你离开我真会死。 提交于 2019-12-05 09:18:16
高通将android的camera模块重新修改了一下,与原生的方式存在一些差异。这里将前段时间学习的一些零散知识进行一下总结,便于以后查阅。 1.整个模块主要巡行三个主线程:control、config及frame,control用来执行总的控制,是上层控制接口(这个线程还未去了 解)?config主要进行一些配置,这个线程里面主要进行3A的工作,另外还有一些跟效果有关的设置;至于frame线程好像主要用来做预览吧。目前还 只是大致了解config线程。 2.在Qualcomm执行初始化时就会调用到mm_camera_exec()函数来建立config线程 launch_cam_conf_thread();阅读此线程函数体会发现里面使用了select机制来检测配置指令并进行分发(调用不同的分支函 数)。后面就是一连串的function call了。 关于select机制还有不少疑点需要进一步学习:指令的来源?如何对文件进行控制的? 比如下面这一段LOG就可以看到对AE、AWB及HIS设置的过程(只贴了部分): E/CAM_FD ( 194): ...... entering config duty loop ...... E/CAM_FD ( 194): cam_conf: MSM_CAM_IOCTL_GET_STATS: resptype=1 ctrl_cmd.type=4 E

陀螺丨世界丨系丨统丨开丨发案例

青春壹個敷衍的年華 提交于 2019-12-05 07:51:07
陀螺丨世界丨系丨统丨开丨发 欢迎咨询厄加特Urgot(189微2212电1525) ,58丨红包丨系丨统丨开丨发丨案丨例丨源丨码丨制丨度丨方丨案丨,我司位于广州天河区,是一家大型专业商业服务互联网技术一体化公司,百人技术团队,市面上有的你叫得出名字的类似系统我们都能做,模式多样,紧跟时代,能做出最符合你、最接近时代轨道的项目方案 Android 从诞生至今,已经 10 年有余了。在这 10 年中,Android 自身在不断完善着,同时,运行在这一操作系统上的 App 也在逐日丰富着。一直以来,学习 Android 开发都是以 Java 为基础,再逐渐熟悉 Android API 的过程。然而,Android App 经过多年的发展变化,这套旧有的方式还能不能适应当今就业市场的需求,这样的学习过程还能不能满足现在企业岗位的要求呢?阅读本文,给你答案。 本文凝聚了作者多年来从事 Android App 设计、开发、测试、优化等知识结晶,为读者梳理出一套适合当今社会需要的 Android App 开发快速上手指南。通过阅读本文,您将得到: 之所以叫做秒杀系统,就是因为与普通的系统相比,它要在很短的时间内处理比平时大的多的流量请求,怎么保证服务器在处理这些请求时不至于出现宕机现象,它的背后支撑技术是什么? 通过本次的学习您将学到以后下知识点: 秒杀系统注意的一些关键点:

Android稳定性之Monkey测试

核能气质少年 提交于 2019-12-04 06:20:24
1. Monkey是什么 Monkey 是一个运行在模拟器或者Android设备中可以产生类似用户点击、触摸、手势以及一些系统级的伪随机事件流的程序。我们可以通过命令让monkey向模拟器或者Android设备发送伪随机事件流来对我们开发的App进行压力测试。 1.1. Monkey程序由Android系统自带,使用Java语言写成,在Android文件系统中的存放路径是: /system/framework/monkey.jar,包名:com.android.commands.monkey.Monkey; 1.2. Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中 的存放路径是:/system/bin/monkey; 内容为: # Script to start "monkey" on the device, which has a very rudimentary # shell. # base=/system export CLASSPATH=$base/framework/monkey.jar trap "" HUP exec app_process $base/bin com.android.commands.monkey.Monkey $* app_process是Android的系统启动进程

Android的开机启动流程

◇◆丶佛笑我妖孽 提交于 2019-12-03 06:25:02
1、Android的开机启动流程 Android的层次框架图,如下所示: 图片清晰地展示了Android的五层架构,从上到下依次是:应用层、应用框架层、库层、运行时层以及Linux内核层。Android的启动流程是自下向上的,大体上可以分为三个阶段:1、BootLoader引导启动内核;2、启动Linux内核;3、启动Android系统。 Android的启动流程如下所示: 接下来具体地描述一下启动过程: Step 1. Boot Rom 当长按电源开机的时候,引导芯片开始从固化在ROM的预设代码开始执行,然后将加载引导程序到RAM中。 Step 2. BootLoader BootLoader又称为引导程序,它在运行操作系统之前运行的一段程序,是运行的第一个程序。主要的功能有检查RAM、初始化一些硬件外设等功能,它最终的目的是启动操作系统。 文件的路径为: /bootable/bootloader/ BootLoader的最主要功能是将操作系统进行启动,把操作系统的镜像文件拷贝到RAM中去,然后跳转到它的入口处去执行,我们称之为启动加载模式,该过程没有用户的介入,是它正常的工作模式,其步骤如下: Stage 1: (1)硬件初始化,为Stage 2的执行以及随后内核的运行准备好基本的硬件环境; (2)为加载Stage 2准备RAM空间,为了获得更好的执行速度,通常把Stage

Android也架构之三:简单工厂模式优化网络请求

丶灬走出姿态 提交于 2019-12-03 00:45:16
很悲催,我们在 《Android也架构之二:单例模式访问网络》 用httpConnect的方式去访问网络,而且能够正常获取数据了,可是老板能,技术出生,他要求我重新用httpClient去获取获取网络数据,童鞋们,是不是头快爆炸了?你是否也遇见过这样的或者类似这样的情况呢? 拥抱变化,让我们从现在开始吧,上一篇文章 《Android也架构之二:单例模式访问网络》 中,我们学会用了单例模式,单例模式一般解决的是和程序相关的问题,和业务逻辑无关,今天开始,我们就开始学习和业务相关的设计模式,拥抱变化,让业务和需求的变化放马过来吧。。。。 今天,通过这篇文章,你讲学习到以下这些知识点: 1、学会用简单工厂模式,基于api接口开发的工作模式,接口的特点是可插拔,不会影响到客户端数据。 2、学会用httpclient框架请求http数据,涉及到android的httpclient框架的细节知识点,比如httpclient自动重连机制,连接自动释放等 3、学会在子线程如何更新主线程的android基础知识 首先我们来看一下项目的目录结构: 刚才说了,基于接口开发应该是可插拔的,就是说无论服务端(http包下的类)是怎么变化,都不会影响到客户端(clientActivity)的使用,服务端添加或者修改功能的时候不能修改客户端(clientActivity)代码。

源码解析Android架构组件ViewModel

匿名 (未验证) 提交于 2019-12-03 00:38:01
ViewModel 是google官方的MVVM架构组件,目前已经集成到了最新的支持库中了,是MVVM架构的核心组件之一。不懂MVVM的请看之前的文章: (一)Android官方MVVM框架实现组件化之整体结构 网上看到的ViewModel的博文千篇一律,实在忍不了,自己写看了源码写了一篇,欢迎拍砖! ViewModel是存储UI相关数据并不会因为旋转而销毁的类。 最为重要的就是ViewModel具有下面的生命周期,这就是ViewModel的最可贵之处: 正因为ViewModel有如此的生命周期,所以ViewModel在MVVM可以作为数据存储区,是连接View和Model重要组件,ViewModel的核心作用如下图所示: 1.ViewModel是怎么创建的? 2.ViewModel是怎么存储的? 3.ViewModel为什么可以实现旋转屏幕不销毁? 先放简单讲一下 ViewModel 的基本使用方法,我们在获取 ViewModel 的时候绝对不能直接使用 new 关键字去创建,需要使用 ViewModelProviders 去使用系统提供的反射方法去创建我们想要的 ViewModel ,下面是官方架构组件android.arch.lifecycle包下面的 ViewModelProviders 工具类用来获取ViewModel: /** * 注解by danxx on 2018

源码解析Android架构组件ViewModel

匿名 (未验证) 提交于 2019-12-03 00:37:01
ViewModel 是google官方的MVVM架构组件,目前已经集成到了最新的支持库中了,是MVVM架构的核心组件之一。不懂MVVM的请看之前的文章: (一)Android官方MVVM框架实现组件化之整体结构 网上看到的ViewModel的博文千篇一律,实在忍不了,自己写看了源码写了一篇,欢迎拍砖! ViewModel是存储UI相关数据并不会因为旋转而销毁的类。 最为重要的就是ViewModel具有下面的生命周期,这就是ViewModel的最可贵之处: 正因为ViewModel有如此的生命周期,所以ViewModel在MVVM可以作为数据存储区,是连接View和Model重要组件,ViewModel的核心作用如下图所示: 1.ViewModel是怎么创建的? 2.ViewModel是怎么存储的? 3.ViewModel为什么可以实现旋转屏幕不销毁? 先放简单讲一下 ViewModel 的基本使用方法,我们在获取 ViewModel 的时候绝对不能直接使用 new 关键字去创建,需要使用 ViewModelProviders 去使用系统提供的反射方法去创建我们想要的 ViewModel ,下面是官方架构组件android.arch.lifecycle包下面的 ViewModelProviders 工具类用来获取ViewModel: /** * 注解by danxx on 2018

Android面试题整理1

匿名 (未验证) 提交于 2019-12-03 00:36:02
1. 接口的意义(百度) 接口的意义用三个词概括规范,扩展,回调。 2. 抽象类的意义(百度) 为其他子类提供一个公共的类型 封装子类中重复定义的内容 定义抽象方法,子类虽然有不同的实现,但是定义是一致的。 3. 内部类的作用 内部类提供了更好的封装,可以把内部类以藏在外部类之内,不允许同一个包中的其他类访问该类。 内部类的方法可以直接访问外部类的所有数据,包括私有数据。 内部类所实现的功能使用外部同样可以实现,只是使用内部类更方便。 内部类的功能在于,每个内部类都能独立的继承一个接口的实现,所以无论外围类是否已经继承了某个(接口的)的实现,对于内部类都没有影响。内部类使得多重继承的解决方案变得完整,并且内部类允许继承多个非接口类型(类或者抽象类)。通过内部类分别继承一个基类,外部类创建内部类的对象,并使用内部类的方法,变相的实现类多重继承。 4. Java内部类的好处?为什么用内部类? 举个例子,如果你想实现一个接口,但是这个接口中的一个方法和你构想的这个类中的一个方法的名称,参数相同,你应该怎么办?这时候,你可以建一个内部类实现这个接口。由于内部类对外部类的所有内容都是可访问的,所以这样做可以完成所有你直接实现这个接口的功能。 真正原因是解决多继承 5.静态内部类的非静态内部类的区别 和非静态内部类相比,区别就在于静态内部类没有了只指向外部的引用。 在任何非静态内部类中