hero image

qiang.zhang

问渠哪得清如许,为有源头活水来

Android 发展历程

Android 发展历程

Android是一款基于Linux的移动端开源操作系统,中文名为安卓。 Android系统不仅用于智能手机,还可用于平板电脑、智能电视、车载大屏、智能家居等设备。 Android的首个正式版本Android1.0于2008年9月由谷歌公司发布,而第一部Android手机则由HTC公司制造。

android gradle 构建工具 草稿

pre Build UP-TO-DATE pre Release Build UP-TO-DATE compile Release Renderscript NO-SOURCE data Binding Merge Dependency Artifacts Release data Binding Merge Gen Classes Release generate Release Res Values generate Release Resources compile Release Aidl package Release Resources generate Release Build Config java Pre Compile Release parse Release Local Resources check Release Aar Metadata create Release Compatible Screen Manifests extract Deep Links Release process Release MainManifest process Release Manifest extract Proguard Files merge Release Resources configure CMake Rel With Deb Info[arm64-v8a] data Binding Gen Base Classes Release build CMake Rel With Deb Info[arm64-v8a] configure CMake Rel With Deb Info[armeabi-v7a] build CMake Rel With Deb Info[armeabi-v7a] configure CMake Rel With Deb Info[x86] build CMake Rel With Deb Info[x86] configure CMake Rel With Deb Info[x86_64] build CMake Rel With Deb Info[x86_64] external Native Build Release merge Release JniLib Folders merge Release Native Libs check Release Duplicate Classes strip Release Debug Symbols desugar Release File Dependencies extract Release Native Symbol Tables merge Release Shaders compile Release Shaders NO-SOURCE generate Release Assets UP-TO-DATE merge Release Native Debug Metadata merge Release Assets compress Release Assets process Release Java Res NO-SOURCE collect Release Dependencies sdk Release Dependency Data validate Signing Release write Release App Metadata write Release Signing Config Versions merge Release Art Profile process Release Manifest For Package merge Ext Dex Release merge Release Java Resource process Release Resources compile Release Java With Javac dex Builder Release optimize Release Resources merge Dex Release compile Release Art Profile package Release create Release Apk Listing File Redirect lint Vital Analyze Release lint Vital Report Release lint Vital Release assemble Release


qiang.zhang大约 3 分钟
控件基础

控件基础

Bool

在 XML 中定义的布尔值。

注意:Bool 是使用 name 属性中提供的值(而不是 XML 文件的名称)引用的简单资源。因此,我们可以在一个 XML 文件中将 Bool 资源与其他简单资源合并到一个 resources 元素下。

文件位置:

res/values/filename.xml 文件名可以任意设置。bool 元素的 name 将用作资源 ID。

资源引用:

在 Java 中:R.bool.bool_name

在 XML 中:@[package:]bool/bool_name


qiang.zhang大约 10 分钟
Android 系统框架

Android 系统框架

Android 是一种基于 Linux 的开放源代码软件栈,为各类设备和机型而创建。下图所示为 Android 平台的主要组件。

架构图
架构图

Linux 内核

Android 平台的基础是 Linux 内核。例如,Android Runtime (ART) 依靠 Linux 内核来执行底层功能,例如线程和低层内存管理。 使用 Linux 内核可让 Android 利用主要安全功能,并且允许设备制造商为内核开发硬件驱动程序。


qiang.zhang大约 5 分钟
Activity 基本使用

Activity 基本使用

向另一个应用发送数据

  1. 发起通话
Uri number = Uri.parse("tel:5551234");
Intent callIntent = new Intent(Intent.ACTION_DIAL, number);

qiang.zhang大约 3 分钟
Broadcast 基础与使用

Broadcast 基础与使用

广播简介

系统会在发生各种系统事件时自动发送广播,例如当系统进入和退出飞行模式时。系统广播会被发送给所有同意接收相关事件的应用。

广播消息本身会被封装在一个 Intent 对象中,该对象的操作字符串会标识所发生的事件(例如 android.intent.action.AIRPLANE_MODE)。该 Intent 可能还包含绑定到其 extra 字段中的附加信息。例如,飞行模式 intent 包含布尔值 extra 来指示是否已开启飞行模式。

广播的定义

在 Android 中,Broadcast 是一种在应用程序之间传输信息的机制,要发送的广播内容是一个 Intent,这个 Intent 中可以携带我们要传送的数据。(数据小于1MB)


qiang.zhang大约 6 分钟
Broadcast 问题大盘点

Broadcast 问题大盘点

  1. 广播内部实现?

自定义广播接收者 BroadcastReceiver,并复写 onRecvice();

通过 Binder 机制向 AMS(Activity Manager Service) 注册广播;

通过 Binder 机制向 AMS(Activity Manager Service) 发送广播。

AMS 查找符合相应条件(IntentFilter/Permission等)的BroadcastReceiver,将广播发送到BroadcastReceiver 所在的消息循环队列中。


qiang.zhang大约 3 分钟
Service 基础知识

Service 基础知识

概念

Service 是一种可在后台执行长时间运行操作而不提供界面的应用组件。服务可由其他应用组件启动,而且即使用户切换到其他应用,服务仍将在后台继续运行。此外,组件可通过绑定到服务与之进行交互,甚至是执行进程间通信 (IPC)。例如,服务可在后台处理网络事务、播放音乐,执行文件 I/O 或与内容提供程序进行交互。

服务的分类

前台服务

前台服务执行一些用户能注意到的操作。例如,音频应用会使用前台服务来播放音频曲目。前台服务必须显示通知。即使用户停止与应用的交互,前台服务仍会继续运行。


qiang.zhang大约 7 分钟
Service 问题大盘点

Service 问题大盘点

  1. 什么时候选择服务,什么时候选择线程?

简单地说,服务是一种即使用户未与应用交互也可在后台运行的组件,因此,只有在需要服务时才应创建服务。

如果我们必须在主线程之外执行操作,但只在用户与我们的应用交互时执行此操作,则应创建新线程。例如,如果只是想在 Activity 运行的同时播放一些音乐,则可在 onCreate() 中创建线程,在 onStart() 中启动线程运行,然后在 onStop() 中停止线程。还可考虑使用 AsyncTask 或 HandlerThread,而非传统的 Thread 类。


qiang.zhang大约 7 分钟
Android 开发基础

Android 开发基础

App的运行环境

App是在手机上运行的一类应用软件,Android 系统基于Linux内核,但不等同与Linux 系统,是无法直接运行在Linux系统上的 我们可以运用模拟器或者真机进行App的调试与开发,真机需要在开发者模式中打开USB调试,模拟器则是直接运行在电脑上的, 模拟器很占用电脑的内存,并且没有真机的一些功能。

App的开发语言

基于Android 系统的App开发主要有两大技术栈,一个是原生开发,另外一个就是混合开发。 原生开发指的是在移动平台上利用官方提供的编程语言,比如Java Kotlin,开发工具包(SDK),开发环境进行App 开发。 混合开发指的是结合原生技术和H5技术开发的混合应用,也就是将App的页面改成内嵌的网页,无需升级App,只需要覆盖服务器上的网页,即可动态更新App页面。 混合开发本质上是依赖于原生开发的。


qiang.zhang大约 6 分钟
Android 简单控件

Android 简单控件

文本控件

1.文本定义

不推荐在XML 文件中直接写字符串,应该使用来自@string的字符串,将字符串定义在专用的位置下:

// res/values/strings.xml
<resources>
    <string name="app_name">app name</string>
    <string name="hello">你好,世界</string>
</resources>


qiang.zhang大约 5 分钟
2
3
4
5
...
9