Android入门实践

什么是Android

Android是基于Linux内核开发、主要以Java为开发语言的一个开源的操作系统,主要用于移动设备,如智能手机和平板电脑、可穿戴设备等,当然还有更多的领域使用到了Android系统,例如电视、机顶盒等
为什么选用Linux内核

Android的历史

(这儿把红框内容做成一个图片,例如乔布斯图、Linux图、Java图)
** Steve Jobs – “No One Is Going To Buy A Big Phone”
** Linux团队从Linux内核主线中除名
** Oracle起诉Google,称未取得授权。

你可能看到今日辉煌的Android,移动操作系统市场90%的占有率,他的历史可谓是相当曲折、一言难尽的
关键字: 2003年、Andy Rubin、Linux内核、Java、 google、2007开源、2008发布第一个版本

Android的架构

Android版本

http://developer.android.com/abort/dashboards/
统计

Android系统提供了哪些东西给developer?

四大组件
  • Activity 活动
  • Service服务

塞班挂QQ,IOS和Windows Phone期初是不支持后台运行的,后来慢慢的认识到其重要性所以后台慢慢加入了,而安卓从一开始就支持后台功能,既使应用程序在关闭的情况下也会在后台运行。

  • Broadcast Receiver广播接收器
  • 内容提供器

用于在不同的程序之间共享数据,即将一些数据共享给他应用,这些数据是一些可以进行二次开发的基础数据,例如:电话簿、短信、多媒体等的数据,他们都实现了跨程序数据共享的功能

丰富的系统组件

Android为开发者提供了丰富的系统组件,可以帮助开发者设计出漂亮的界面,当然,随着也可以定制属于自己的控件。

SQLite 数据库

Andrid 自带的数据库,支持SQL语法,也有封装好的API,存储和读取非常方便。(在这加代码,记住用户名和密码)

强大的多媒体

音乐、视频、录音、拍照等,可以用代码进行控制。
连接真机。
通知

地理位置定位

移动设备相对于PC,地理定位功能应该可以算是一个很大的亮点,结合强大的地图功能,LBS 这一领域潜力非常大。例如外卖、打车、团购、社交、侦查等。

环境搭建

  1. 挑选一个顺手的开发工具。开发工具有Eclipse和Android Studio,Android项目早期是用Eclipse开发的,需要安装很多插件,开发Android需要安装ADT。而Android Studio是基于Intellij IDEA开发的,插件安装非常简单,还集成了很多工具。比较推荐Android Studio
  2. JDK:Java开发工具包
  3. Android SDK:谷歌提供的Android开发工具包。在开发时我们需要引入该工具包来使用相关API

Hello World

#include <stdio.h>
int main()
{printf("Hello,World!\n");return 0;
}

开始Hello World之路

  • 分析Hello World案例
  • 项目结构分析
  • Android Studio使用

详细介绍

UI开发

  1. 如何编写程序界面
  2. 常用控件的使用
    2.1 TextView
    2.2 Button
    2.3 EditView
    2.4 ImageView
    2.5 ListView
    2.6 …
  3. 4种基本布局
    3.1 线性
    3.2 相对
    3.3 帧布局
    3.4 百分比布局

####0【‘
Activity

  1. TextView 、Button、EditText、Spinner、LinearLayout、自定义View等
  2. 活动的生命周期
  3. 活动间的信息传递

Boardcast

  1. 静态活动
  2. 动态活动
  3. 自定义活动

Content Provider

Service

网络

  • 子线程

将耗时的操作放到子线程中去,这里就需要用到java的多线程操作

  • 更新UI

不允许在子线程中更新UI,因为UI是线程不安全的,必须在主线程中更新,否则会异常。

  • 异步消息处理机制
  • AsyncTask

权限

http://developer.android.com/reference/android/Manifest.permission.html

应用上线

Android系统要求所有的应用软件必须有一个签名文件,直接通过AS运行程序会使用一个默认的签名文件(仅仅适用于开发阶段)
AS生成签名
Gradle生成签名

分享

总结

提问

  • 安卓为什么会越来越卡
    超出了硬件的范畴,

一方面:
IOS 是基于Unix的,而Unix不是开源的操作系统,iOS同样也没有开源。 iPhone之所以不会出现“越用越卡”的情况,是因为苹果公司对它的手机从硬件到软件拥有最高的管理权限,在封闭式的环境中,来自第三方的应用程序无法调用超过iPhone承受限度的指令,自然也不可能造成持续性的系统损伤。

而安卓是基于LInux,由于Linux核心设定应用在调取系统功能时一定要取得ROOT权限,这也导致大量应用因为单一功能的实现需求而获得整个ROOT层面的支配,可以在Android手机的任意储存位置进行读写,这种高自由度无异于开启了潘多拉魔盒,让Android手机无法对恶意App事先设防

另一方面:
一个是宏内核,一个是微内核,宏内核会把每个应用程序当成是系统自身的一部分,而微内核会将CPU分为几部分,当分配的CPU足够支撑应用时其他空闲CPU不会参与。房子的模型。。

如何解决:

  1. android在4.4后将应用程序的运行模式由Dalvik换成了ART,简单理解就是预编译。在安装的时候就编译成本地的机器码,减少了启动和运行中的时间
  2. 定制系统,例如小米的MIUI、华为的。。都是在Linux内核上打补丁。

Android技术分享相关推荐

  1. mysql朗读,Android技术分享-文字转语音并朗读

    Android技术分享-文字转语音并朗读 最近在做一个项目,其中有一个功能是需要将文本转换成语音并播放出来.下面我将我的做法分享一下. 非常令人开心的是,Android系统目前已经集成了TTS,提供了 ...

  2. 能认真做 Android 技术分享的已经不多了

    如题,目前的 Android 大环境大家都清楚,再加上知识付费的不同形式体现,最终导致 高质量 的东西越来越少,想要安静地学点东西已经很难了. 今天这个你认为是广告也罢,认为我是认真推荐的也没问题. ...

  3. android 朗读推送内容,Android技术分享-文字转语音并朗读

    最近在做一个项目,其中有一个功能是需要将文本转换成语音并播放出来.下面我将我的做法分享一下. 非常令人开心的是,Android系统目前已经集成了TTS,提供了相关的库供我们进行调用,不必到处去搜寻第三 ...

  4. Android技术分享| 【Android 自定义View】多人视频通话控件

    [Android 自定义View]多人视频通话控件 *以上图片截自微信等待中界面 等待中界面 上图是微信多人视频通话时未接通的界面状态,可见每个人的 View 中大致需包含了以下元素. 头像 昵称 L ...

  5. android技术分享方向,android开发分享在Android中计算指南针方位/标题到位置

    在这罗盘上的箭头显示从你的位置到天房的方向( 目的地位置 ) 你可以简单的使用bearingTo,这样就可以给你从你的位置到目的地的直接angular度 Location userLoc=new Lo ...

  6. Android技术分享| Android WebRTC 开启H264软件编解码教程

    Android WebRTC 软件编解码基于 openH264 和 FFMpeg,但是编译时默认是不开启的,想要开启需要对代码做一定的增加修改,下面我将所有修改步骤一一列出. 本文基于 webRTC ...

  7. Android技术分享| ViewPager2离屏加载,实现抖音上下视频滑动

    要实现类似抖音上下滑动小视频的丝滑效果,需要有一个预加载的功能.所谓的预加载, 就是需要在显示当前页的情况下,提前将当前页后面的内容加载,以保证用户滑动到下一个视频的时候, 可以减少等待时间,在正常网 ...

  8. Android技术分享| 视频通话开发流程(二)

    多人呼叫 多人呼叫与点对点呼叫区别在于多人呼叫是一次呼叫1个以上的人,中途也可以再呼叫邀请别人加入通话. 整个呼叫的流程跟点对点呼叫类似,但也有些区别,需要添加额外的 API 逻辑来实现功能.下面我们 ...

  9. Android技术分享| 【自习室】自定义View代替通知动画(完)

    在之前的文章中我们实现了自定义View需要的基本功能,本篇中我们通过 Timer 实现动画功能.我偷偷修改了一些数据结构,一会在下面贴出来. 最终效果图: 动画是通过 Timer 每17毫秒调用 Vi ...

最新文章

  1. Java 二叉树 前序_java实现二叉树前序中序后序层次遍历
  2. 2020 操作系统第二天复习(习题总结)
  3. Java判断文件是否为图片文件(GIF,PNG,JPG)
  4. leetcode1253. 重构 2 行二进制矩阵(贪心算法)
  5. C++ 序列式容器之vector
  6. 摄影获得最佳图像的十大要诀_十大最佳应用程序性能管理工具
  7. ELK详解(十)——Logstash收集Tomcat日志实战
  8. Hi3516A开发--电阻分压阻值计算
  9. java将阿拉伯数字转换为中文数字
  10. html5语文答题制作,语文万能答题模板
  11. KK 在 68 岁生日时给出的 68 条建议[翻译]#yyds干货盘点#
  12. 熔断机制什么意思_熔断机制是什么意思?什么是熔断机制?
  13. mysql运维工程师_运维工程师需要了解的MySQL运维经验
  14. 华捷艾米王亚楠:3D MR让未来无限可能
  15. 颜色的识别方法和探索 基于matlab
  16. php k线15分钟 30分钟,15分钟30分钟K线战法
  17. java中printf,print,println,区别及用法详解
  18. 文档查看器GroupDocs.Viewer V17.11发布 | 附下载
  19. 单片微型计算机系统应用和开发特点,单片微机原理及应用 徐春辉第1.2.3章 习题答案...
  20. 论文笔记--(HRNet)用于人类姿势估计的深度高分辨率表征学习(Deep High-Resolution Representation Learning for Human Pose Estima)

热门文章

  1. zxl-机器学习-01
  2. 今年你们年终奖是啥?漂亮不?
  3. oracle分区维护操作不能与其他,ORA-14048:分区维护操作不能与其它操作组合
  4. 京颐医疗云产品总监柏鹏:云转型布局未来,我们是如何应对医疗云的挑战与机遇...
  5. java/php/net/python互联网 智慧云诊所管理系统设计
  6. ural 1553 树剖+线段树
  7. 第109篇 Compound 中的 Liquidate
  8. 微信小程序定义公共方法
  9. 指向指针数组的指针和指针数组类型的指针
  10. 最新分布式训练深度学习框架