通读《疯狂Android讲义》笔记 01___Android基础篇

文 | 莫若吻


注:
1.本文内容参考 李刚的《疯狂Android讲义》一书。
2.此书适合有一定Java基础、初学Android的同学阅读与学习。我最近想巩固下Android基础知识就来拜读一下此书。
3.本文笔记侧重于知识梳理,不侧重于讲解,如果有同学遇到不懂的知识点可以给我留言或者买书自行学习。
4.如果你最近想参加面试,可以参考此文复习哦!

一.第一章 Android应用

1.Android平台架构及特性

Android系统的底层建立在Linux系统之上,Android平台由操作系统、中间件、用户界面和应用软件四层组成,采用一种被称为软件叠层(Software Stack)的方式进行构建。
这种软件叠层结构使层与层之间相互分离,明确各层的分工。这种分工保证了层与层之间的低耦合。当下层的层内或层下发生改变时,上层应用程序无须任何改变。

2.Android系统组成

Android系统主要由应用程序层、应用程序框架、函数库、Android运行时Linux内核等5部分组成。
1)开发Android应用程序(即Android APP)是面向底层的应用程序框架进行的。
2)Android运行时由Android核心库集和**Dalvik虚拟机**2部分组成。每一个Android应用程序都运行在一个单独的Dalvik虚拟机内。
3)Dalvik虚拟机依赖于Linux内核提供的核心功能。
4)Linux内核提供了安全性、内存管理、进程管理、网路协议栈和驱动模型等核心系统服务。

3.Dalvik虚拟机与JVM的区别

  • Dalvik虚拟机并不遵守JVM(Java Virtual Machine)的规范,两者并不兼容。
  • JVM运行的是Java字节码(一般是.class文件);
    Dalvik运行的是专有的dex文件(Dalvik Executable)。
  • JVM直接从.class文件或JAR包中加载字节码后运行;
    Dalvik则需要通过DX工具将应用程序的所有. class文件译成.dex文件,Dalvik则运行.dex文件。
  • Dalvik虚拟机非常适合在移动端上使用;相对于PC或服务器上运行的虚拟机,Dalvik不需要很快的CPU计算速度和大量的内存空间。
  • JVM都是基于栈的,而Dalvik则是基于寄存器的。

4.Dalvik虚拟机的特点

  • 运行专有的.dex文件。
    专有的.dex文件减少了.class文件中的冗余信息,而且会将所有的.class文件整合到一个文件中,从而提高运行性能,而且DX工具还会对.dex文件进行一些性能优化。
  • 基于寄存器实现。
    大部分虚拟机包括JVM都是基于栈的,而Dalvik则是基于寄存器的。一般基于寄存器的虚拟机具有更好的表现,但在硬件通用性上略差。

5.AndroidManifest.xml清单文件

包括信息:
- 应用程序的包名,该包名将作为应用的唯一标识。
- 应用程序所包含的组件,eg:Activity、Service、BroadcastReceiver、ContentProvider等。
- 应用程序兼容的最低版本
- 应用程序使用系统所需的权限声明
- 其他程序访问该程序所需的权限声明。
eg:

<?xml version="1.0" encoding="utf-8"?>
<!--指定Android应用包名:package -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.promise.sun">
 <!--应用权限声明 -->
 <uses-permission android:name="android.permission.VIBRATE" />
 <!--指定Android应用的标签和图标:label、icon -->
 <application
        android:name=".SunApplication"
        android:allowBackup="false"
        android:hardwareAccelerated="true"
        android:icon="@drawable/ic_launcher"
        android:label="${APP_NAME}"
        android:theme="@style/AppTheme"
        android:largeHeap="true"
        tools:replace="android:allowBackup,android:label,android:theme">
        <!--定义Android的一个组件:activity -->
        <activity
            android:name=".app.activity.WelcomeActivity"
            android:screenOrientation="portrait"
            android:theme="@style/StartAppTheme">
            <intent-filter>
                <!--指定此activity为应用程序入口 -->
                <action android:name="android.intent.action.MAIN" />
                <!--加载该应用程序时运行此activity -->
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <!--定义Android的一个组件:service -->
        <service android:name=".app.ApkUpdateService" />
 </application>
</manifest>

6.Android组件简介

1)Activity和View

Activity是Android的四大组件之一。
Activity是Android中负责与用户交互的组件,只能通过setContentView(view);来显示指定组件。
View组件是所有UI控件、容器控件的基类,但view组件需要放到容器组件中或者使用Activity将其显示出来。
Note:ViewGroup是View的子类。

2)Service

Service是Android的四大组件之一。拥有独立的生命周期。
Service作用:一般用于为其他组件提供后台服务和监控其他组件的运行状态。
Service与Avtivity的区别在于:Service通常位于后台运行,一般不需与用户交互,因此Service没有图形用户界面。

3)BroadcastReceiver

BroadcastReceiver是Android的四大组件之一。广播消息接收器,对Android应用中其他组件进行监听。
注册系统级的监听事件有两种方式
- 在Java 代码中通过Context.registReceiver();完成注册广播。
- 在清单文件中使用

4)ContentProvider

ContentProvider是Android的四大组件之一。
ContentProvider为Android应用之间实现实时数据交换。
Note:一般与ContentProvider结合使用的是ContentResolver,一个应用程序使用ContentProvider暴露自己的数据,而另一个应用程序则通过ContentResolver来访问数据。

5)Intent和IntentFilter

严格讲 Intent并不是Android应用组件。它是Android应用内不同组件之间通信的载体。
Note:Activity、Service、BroadcastReceiver三种组件之间的通信都以Intent作为载体,只使用时略有区别。
- 启动一个Activity,使用Context的startActivity(intent);方法。
- 启动一个Service,使用 startService(intent); 或者 bindService(intent,serviceConnection,intFlags);方法。
- 触发一个BroadcastReceiver,使用sendBroadcast(intent); 或者sendStickyBroadcast(intent) 或者;sendOrderedBroadcast(intent,receiverPermission);方法发送广播。

显示Intent和隐式Intent:
显示Intent明确指定需要启动或者触发的组件的类名
隐式Intent只是指定需要启动或者触发的组件应该满足的条件

Note:隐式Intent需要通过IntentFilter实现,被调用组件使用IntentFilter来声明自身所满足的条件。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这是一份关于JESD204B的调试手册,其中详细介绍了一些JESD204B技术相关的知识和调试经验。JESD204B协议是用于将数据传递给高速数据转换器或FPGA的标准化接口,因此该手册主要涉及该接口的调试和优化。 这份手册分为三个部分。第一部分简述了JESD204B的基础知识,包括接口架构、数据时钟和控制字等方面。第二部分主要介绍了在设计JESD204B系统时需要注意的方面,例如时钟选择、接口绑定和回声消除等。第三部分则提供了一些常见的JESD204B故障排除和调试指南。 对于使用JESD204B接口的设计师和工程师来说,该手册是一个非常实用的调试工具。通过仔细阅读和理解本手册中的内容,我们可以更好地利用JESD204B协议接口,提高系统的性能和可靠性。同时,这份手册也提供了对于一些JESD204B故障的有效解决方案,从而可以节省项目开发时间和成本。总的来说,这份手册对于任何需要使用JESD204B接口的工程师都是一个非常宝贵的资源。 ### 回答2: JESD204B是一种用于高速数字信号传输的接口标准,这个标准定制了数字接口的物理层和协议层规范,使得数字信号的传输更为快速和可靠。《jesd 204b调试手册_中文_ti.pdf》是关于JESD204B调试方面的中文手册。 该手册首先介绍了JESD204B的标准和相关的术语,然后详细讲解了如何进行JESD204B的调试。手册列出了常见的JESD204B连接问题,例如时钟同步问题、失步、帧同步等问题,并提供了解决这些问题的方法。此外,手册介绍了一些常见的JESD204B调试工具和测量设备,并介绍了如何使用这些工具进行诊断和调试。 总体而言,该手册非常详细地介绍了如何进行JESD204B的调试,对初学者和专业人士都非常有帮助。通读此手册,可以让人了解JESD204B标准的基础和高级概念,以及在实际应用中如何解决JESD204B连接问题。无论是在设计JESD204B系统还是在调试JESD204B接口时,这份手册都是一份非常宝贵的参考资料。 ### 回答3: JESD 204B调试手册_中文_ti.pdf是一份介绍JESD 204B协议的调试手册。在PDF中,我们可以学习到JESD 204B协议的原理、注释、调试步骤和示例代码。主要包含以下内容: 首先,手册介绍了JESD 204B协议及其优势,说明了该协议如何提高数据转换系统的性能和可扩展性。同时,手册介绍了一些重要的基础知识,如码字同步和框同步等。 其次,手册提供了一个针对JESD 204B协议的详细描述,包括多种不同类型的连接和数据传输方式。这些详细描述包括数据帧格式、传输链路和打包等。手册还介绍了一些基于JESD 204B协议的两个关键字段——K值和F值。 最后,手册介绍了一些常用的调试技术,如时钟同步、状态检测和数据流跟踪等,并且提供了详细的步骤和示例代码来说明如何使用这些技术进行调试。 总之,JESD 204B调试手册_中文_ti.pdf提供了一个很好的入门级别的指南,它可以帮助工程师们深入了解JESD 204B协议及其相关技术。对于任何想了解和掌握JESD 204B协议的工程师来说,这是一份非常有价值的参考资料。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值