紫大-安卓期末复习-2022-6


第一章

1.1.3 安卓的体系结构

  1. 应用程序层。
  2. 应用程序框架层,内容提供者在这一层
  3. 核心类库
  4. Linux内核层

1.1.4 Dalvik 虚拟机

1.4 安卓程序结构

1.5资源的管理和使用

资源在src/main/res目录

调用方式:

1、在Activity中可以通过getResources().getDrawable方法调用图片资源。

getResources().getDrawable(R.mipmap.ic_launcher);  //调用以mipmap开头的文件夹中的资源文件
getResources().getDrawable(R.drawable.icon);       //调用以drawable开头的文件夹中的资源文件

2、在XML文件中调用图片资源

@mipmap/ic_launcher  //调用以mipmap开头的文件夹中的资源文件
@drawable/icon       //调用以drawable开头的文件夹中的资源文件

1.6.2 Logcat 的使用

分为6个等级

第二章

2.3 界面布局的通用属性

属性名称 功能描述
android:id 设置布局的标识
android:layout_width 设置布局的宽度
android:layout_height 设置布局的高度
android:backgroud 设置布局的背景
android:layout_margin 设置当前布局与屏幕边界、周围布局或控件的距离
android:padding

设置当前布局与改布局中控件的距离

2.4.1 线性布局

LinearLayout 中常见的两个属性

android:orientation 设置布局内控件的排列顺序
android:layout_weight 在布局内设置控件权重,属性值可直接写int值

第三章

3.1.1 TextView控件  用于显示文本信息。

android:layout_width

控制文本框的宽度

android:layout_height

控制文本框的高度

android:text     

显示文本字符串

android:textColor

控制文字的颜色

android:textSize

控制文字的大小

android:gravity

控制文本框位置,如设置成'center',将居中显示

3.1.2 EditText控件 编辑框,是 TextView控件的子类

android:layout_width

控制编辑框的宽度

android:layout_height

控制编辑框的高度

android:hint

设置显示在空间上的提示信息

android:maxLines

设置编辑框的最大行数

android:textColor

控制编辑框输入文字的颜色

android:textSize

控制编辑框输入文字的大小

android:textStyle

控制编辑框输入文字的样式

3.1.3 Button 控件 实现点击的三种方法,代码

1、在布局文件中指定onClick属性的值

<Button
    ......
    android:onClick="click" />

2、使用匿名内部类

btn.setOnClickListener(new View.OnClickListener()
    @Override
    public void onClick(View view){
    //实现点击事件的代码
    }
);

3、使用Activity实现OnClickListener接口

public class Activity extends AppCompatActivity implements View.onClickListener{
    @Override 
    protected void onCreate (Bundle savedInstanceState){
    ......
    btn.setOnClickListener(this);
    }   
    @Override 
    public void onClick(View view){
    //实现点击事件的代码
    }
}

3.2.2 常用数据适配器

BaseAdapter   SimpleAdapter   ArrayAdapter

第四章

4.1 Activity的生命周期

1、启动状态        2、运行状态        3、暂停状态        4、停止状态        5、销毁状态

4.3 启动和关闭Activity 代码会写

启动:

public void startActivity(Intent intent)

Intent intent = new Intent(MainActivity.this,secoundActivity.class);
startActivity(intent);

关闭:

public void finish()
    
Button button1 = (Button)findViewById(R.id.button1);
button1.setOnClickListener(new Voew.OnClickListener()I
    @Override
    public void onClick(View v){
    finish();    //关闭当前的activity
});

4.3.1 Intent 意图

1、显式Intent :直接指定目标组件。   实现代码:

Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent);

第一个参数 this 表示当前Activity,第二个参数SecondActivity.class表示要跳转到的目标Activity

2、隐式Intent :不会明确指出需要激活的目标组件,它被广泛应用在不同应用程序之间,进行消息传递。  实现代码:

<activity android:name=".SecondActivity">
    <intent-filter>
        <action android:name="cn.itcast.START_ACTIVITY"/>     
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>

4.3.2 IntentFilter 过滤器

1、action属性匹配规则

<intent-filter>
    <action android:name"android.intent.action.DEIT"/>
    <action android:name"android.intent.action.VIEW"/>
</intent-filter>

2、data属性匹配规则

<intent-filter>
    <data android:mimeType="video/mpeg" android:scheme="http......"/>
    <data android:mimeType="audio/mpeg" android:scheme="http......"/>
    ......
</intent-filter>

3、category属性匹配规则

<intent-filter>
    <category android:name"android.intent.category.DEFAULT"/>
    <category android:name"android.intent.category.BROWSABLE"/>
    ......
</intent-filter>

4.4 Activity之间的跳转

4.4.1 Activity之间的数据传递

(1)使用Intent的putExtra()方法传递数据

(2)使用Bundle类传递数据

4.4.2 Activity之间的数据回传

  1. startActivityForResult()方法,用于开启一个Activity,当开启的Activity被销毁时,会从销毁的Activity中返回数据。
  2. setResult()方法,用于携带数据进行回传。
  3. onActivityResult()方法,用于接收回传的数据。

4.5.2 Activity的启动模式

启动模式有4种:standard  singleTop  singleTask  singleInstance模式,其中最常用的是standard 

4.6.2 Fragment 生命周期和活动单元生命周期比较

        Activity生命周期有5种状态,启动状态、运行状态、暂停状态、停止状态、销毁状态,Fragment生命周期也有着几种状态。

        因为Fragment是被嵌入Activity中使用的,所有它的生命周期的状态直接接受其所属的Activity的生命周期状态影响。1、当在Activity中创建Fragment时,Fragment处于启动状态2、当Activity被暂停时,其中所有的Fragment也被暂停3、当一个Activity处于运行状态时,可单独地对每一个Fragment进行操作,如添加或删除,当进行添加操作时,Fragment处于启动状态4、当进行删除操作时,Fragment处于销毁状态

第五章

5.1 数据存储方式 5种:

  1. 文件存储
  2. SharedPreferences存储
  3. SQLite数据库存储
  4. Content Provide
  5. 网络存储

5.2 文件存储

1、内部存储

FileOutPutStream fos = openFileOutPut(String name, int mode);
FileInputStream fis = openFileInput(String name);

mode表示文件的操作模式。有4种取值

  1. MODE_PRIVATE:该文件只能被当前程序读写。
  2. MODE_APPEND:该文件的内容可以追加。
  3. MODE_WORLD_READABLE:该文件的内容可以被其他程序读。
  4. MODE_WORLD_WRITEABLE:该文件的内容可以被其他程序写。

2、外部存储:动态申请权限

5.4 SQLite数据库存储

概念:它可以存储应用程序中大量数据,并对数据进行管理和维护。

重要的两个类:SQLiteOpenHelper类,SQLiteDatabase类

5.4.3 数据库中的事务,4个基本要素

  • 原子性:事务中的操作要么全部成功,要么全部失败回滚。
  • 一致性:数据库的事务不能破坏关系数据的完整性及业务逻辑上的一致性。
  • 隔离性:事务内部的操作都必须封锁起来,不会被其他事务影响到。
  • 持久性:事务一旦提交,该事务对数据做的更改便持久的保存在数据库中。

第六章

6.1内容提供者概述

• 内容提供者(ContentProvider)Android系统四大组件 之一,用于保存和检索数据,是Android系统中不同应 用程序间共享数据的接口

ContentProvider(数据提供者)是应用程序之间共 享数据的一种接口机制,是一种更为高级的数据共享 方法,可以指定需要共享的数据,而其它应用程序则 则可在不知道数据来源、路径的情况下,对共享数据 进行查询、添加、删除和更新等操作。

Android系统中,许多Android系统内置的数据也是 通过ContentProvider提供给用户使用,例如通讯录、 音视频文件和图像文件等。

工作原理:

数据模型ContentProvider 使用基于数据库模型的简单表格来提供需要共享的数据,在该表格中,每一行表示一条记录,而每一列代表特定类型和含义的数据,并且其中每一条数据记录都包含一个名为“_ID”的字段类标识每条数据

Uri:由3部分组成,scheme  authority  path

6.4 内容观察者概念

•若应用程序需要实时监听ContentProvider共享的数据是否发生变化,可使用Android系统提供的内容观察者(ContentObserver)

•内容观察者(ContentObserver)用于观察指定Uri所代表的数据 的变化,当ContentObserver观察到指定Uri代表的数据发生变化 时,就会触发onChange()方法,此时在onChange()方法中使用 ContentResovler可以查询到变化的数据。

•要使用ContentObserver观察数据变化,就必须在ContentProvider 的delete()insert()update()方法中调用ContentResolver的 notifyChange()方法。

 工作原理:

 第七章

7.1 广播机制的概述

  • 广播(Broadcast是一种运用在应用程序之间传递消息的机制。
  • 广播接收者(BroadcastReceiver是用来过滤、接收并响应广播的 一类组件。
  • 广播接收者可监听系统中的广播消息,在不同组件之间进行通信'

注册广播接收者

动态注册:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        receiver = new MyBroadcastReceiver();   //实例化广播接收者
        // 实例化过滤器并设置要过滤的广播
        String action = "android.Telephony.SMS_RECEIVED";
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction(action);
        registerReceiver(receiver, intentFilter);  // 注册广播
    }

    @Override
    protected void onDestrpy(){
        super.onDestroy();
        unregisterReceiver(receiver); // 当Activity销毁时注销广播接收者
    }

 静态注册: 在 AndroidManifest.xml 中

<receiver
    android:name=".MyReceiver"
    android:enabled="true"
    android:exported="true">
</receiver>

7.3.3 广播的类型

无序广播:无序广播是完全异步执行,发送广播时所有监听这个广播的广播接收者都会接收到此消息,但接收的顺序不确定。

有序广播:按照接收者的优先级接收,只有一个广播接收者能接收消息,在此广播接收者中逻辑执行完毕后,才会继续传递。

优先级

 拦截

如果想要拦截一个有序广播,则必须在优先级较高的广播接收者中拦截接收到的广播。添加abortBroadcast()方法拦截广播。

第八章

8.1 服务的概述

Service(服务)是Android四大组件之一,能够在后台长时间执行操 作并且不提供用户界面的应用程序组件。Service可以与其他组件进行交互,一般是由Activity启动,但是并不依赖于Activity。当 Activity的生命周期结束时,Service仍然会继续运行,直到自己的生命周期结束为止。

Service通常被称为“后台服务”,其中“后台”一词是相对于前台而言,具体是指其本身的运行并不依赖于用户可视的UI界面,除此之外,Service还具有较长的时间运行特性。他的应用场景主要有两个,分别是后台运行和跨进程访问。

8.3 服务的生命周期

使用不同的方法启动服务,其生命周期也是不同的。

8.4 服务的启动方式

startService()方法启动服务,服务会长期的在后台运行,并且服务的状态与开启者的状态没有关系,即使启动服务的组件已经被销毁,服务会依旧运行。

8.5.1  本地服务通信和远程服务通信的区别

Android系统中,服务的通信方式有两种,一种是本地服务通信,一种是远程服务通信。

本地服务通信是指应用程序内部的通信,而远程服务通信是指两个应用程序之间的通信。

使用这两种方式进行通信时必须满足一个前提,就是服务必须以绑定方式开启

远程服务通信是通过AIDL(Android Interface Definition Language)实现的,它是一种接口定义语言 (Interface Definition Language),其语法格式非常简单,与Java中定义接口很相似,但是存在几点差异,具体如下:

  • AIDL 定义接口的源代码必须以.aidl 结尾
  • AIDL 接口中用到的数据类型,除了基本数据类型、String、List、Map、CharSequence 之 外,其他类型全部都需要导入包,即使它们在同一个包中

数据传递

Android系统中,进程间传递的数据包括:

  1. Java语言支持的基本数据类型
  2. 用户自定义的数据类型

第九章

9.1 通过HTTP访问网络

通过标准的Java类HttpURLConnection便可实现基于URL的请求及响应功能。

9.1.2 使用 HttpURLConnection 访问网络

URL url = new URl("http://www.itcast.cn");  //在URL构造方法中传入要访问资源的路径
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("GET");  //设置请求方式
conn.setConnectTimeout(5000);  //设置超时时间
InputStream is = conn.getInputStream();  //获取服务器返回的输入流
conn.disconnect();  //关闭http连接

使用GET方式提交数据

以实体的方式得到请求URL指向的的资源信息,它向服务器提交的参数跟在请求URL后面。使用GET方式访问网络URL的内容一般要小于1024字节。

使用POST方式提交数据

提交的数据以键值对的形式封装在请求实体中,用户通过浏览器无法看到发生的请求数据,因此POST方式比GET方式相对安全

9.2 使用WbeView控件进行网络开发

9.3 JSON 数据

对象结构  以 " { " 开始 以 " } " 结束

数组结构 以 " [ " 开始 以 " ] " 结束

需要注意的是:如果使用JSON存储单个数据(如"abc"),一定要使用数组结构,不要使用对象结构。因为对象结构必须是“键的名称:值”的形式。另外,JSON文件的扩展名为.json。

9.3.2 JSON的解析

使用JSONObject类解析对象结构的JSON数据

JSONObject jsonObj = new JSONObject(jo=son1);
Sreing name = jsonObj.optString("name");
int age = jsonObj.optInt("age");
boolean married = jsonObj.optBoolean("married");

 使用JSONArray类解析数组结构的JSON数据

JSONArray jsonArray = new JSONArray(json2);
for(int i=0 ;i < jsonArray.length() ; i++){
    JSONObject jsonObj = jsonArray.getJSONObject(i);
    String name = jsonObj.optString("name");
int age = jsonObj.opyInt("age");
}

使用GSON库解析对象结构的JSON数据

Gson gson = new Gson();
Person1 person = gson.fromJson(json1,Person1.class);

使用GSON库解析数组结构的JSON数据

Gson gson = new Gson();
Type listType = new TypeToken<List<Person2>>(){}.getType();
List<Person2> person2 = gson.fromJson(json2,listType);

9.4 Handler 消息机制

Handler是一种异步回调机制,主要负责与子线程进行通信。

Handler机制主要包括四个关键对象:

  1. Message:消息,它由MessageQueue统一列队,由Handler处理。
  2. Handler:处理者,主要负责Message的发送以及处理。
  3. MessageQueue:消息队列,主要用来存放Handler发送过来的消息,并且按照先入先出的规则执行。
  4. Looper:消息循环,不断的从MessageQueue中抽取Message并执行。

        Handler消息机制是通过上述四个关键对象的配合使用而完成的。在UI线程中创建Handler对象,并通过该对象的sendMessage()方法发送消息到MessageQueue中,接着通过Looper调用loop()方法不断的从MessageQueue中获取消息,并分发到Handler中,最终通过Handler的handleMessage()方法处理获取的消息。 

第十章

10.1 常用的绘图类   作用和方法

  • Bitmap可以获取图像文件信息,对图像进行剪切、旋转、缩放等操作,并可以指定格式保存图像文件。
  • BitmapFactory是位图工厂,它是一个工具类。
  • Paint代表画笔,用来描述图形的颜色及风格。
  • Canvas代表画布,通过该类提供的方法,可以绘制各种图形。

 第十一章

11.1.1 使用MedidPlayer 类播放音频 

MediaPlayer用于播放音频和视频文件,该类提供了全面的方法支持多种格式的音频文件(3gpmp4

11.1.2 使用SoundPool 类播放音频 

SoundPool即音频池,可以同时播放多个短小的音频,而且占用的资源比较少,他适合在应用程序中播放按键音或者消息提示音等。

11.2.1 使用VideoView 控件播放视频

VideoView控件是播放视频用的,借助它可以完成一个简易的视频播放器。

 11.2.3 MediaPlayer 类和SurfaceView 控件播放视频

MediaPlayer可以播放视频,只不过它在播放视频时没有图像输出,因此需要使用SurfaceView组件展现图像。与VideoView相比,这种方式更易于扩展

SurfaceView组件继承自View,用于显示图像的组件。SurfaceView最大的特点就是它的双缓冲技术,所谓的双缓冲技术是在它内部有两个线程

猜你喜欢

转载自blog.csdn.net/Ipkiss_Yongheng/article/details/125098767