简单的安卓复习

安卓复习

第一章 Android简介

安卓体系结构

​ Android是基于Linux内核的软件平台和操作系统,采用了软件堆层的架构,共分为4层。第一层是Linux内核,提供有操作系统内核管理的底层基础功能。第二层是中间件层,由函数库和Android运行时构成。第三层是应用程序框架层,提供了Android平台基本的管理功能和组件重用机制,第四层是应用程序层,提供一系列核心应用程序。


第二章 Android开发环境

目录结构
  • platforms :框架
  • platforms-tools:编译
  • samples:示例代码和程序
Android调试桥(定义)*

Android调试桥(ADB)是用于连接Android设备或模拟器的工具,负责将应用程序安装到模拟器和设备中,或从模拟器或设备中传输文件。Android调试桥是一个客户端/服务器程序,包含守护程序、服务器程序和客户端程序。守护程序运行在每个模拟器的后台;服务器程序运行在开发环境中,管理客户端和守护程序的连接;客户端程序通过服务器程序,与模拟器中的守护程序相连接。


第三章 第一个Android程序

Android程序结构
  • activity元素 :是对Activity子类的声明,不在

别的要记得,难的有三个

  • AndroidManifest.xml 文件中,根元素是 manifast ,包含 xmlns:androidpackage、android : versionCode 和 android: versionName 4个属性。
  • manifest元素仅能包含一个application元素,application元素中能够声明(生命了每一个应用程序的组件及其属性)Android程序中最重要的4个组成部分,包括Activity、Service、BroadcastReceiver和ContertProvider,所定义的属性将影响所有组成部分。
  • activity元素 :是堆Activity子类的声明,不在AndroidManifest.xml文件中声明的Activity将不能在用户界面中显示。
  • intent-filter中声明两个子元素action和category。

三个目录,三个文件

目录:src(源代码)、res(资源目录)、bin(编译过程中产生的文件,最终产生的apk文件)

三个文件:MainActivity.java (源代码), activity_main.xml(布局文件) , AndroidManifast.xml(程序声明文件)

资源引用

资源的引用一般有两种方法,一种方法是在代码中引用资源,另一种方法则是在资源中引用资源。(一般来说,我们在使用资源时,大多都是在代码中由id来访问资源)


第四章 Android生命周期

程序生命周期(进程怎么变换,有哪些)
Android组件
  • Activity 是Android程序的呈现层,显示可视化的用户界面,并接收与用户交互所产生的界面事件。Android应用程序可以包含一个或多个Activity,一般需要指定一个程序启动时显示的Activity。

  • Service一般用于没有用户界面,但需要长时间在后台运行的应用。可以公开Service的程序接口,供其他进程调用。

  • BroadcastReceiver 用来接收广播消息的组件,不包括任何用户界面。可以启动Activity或者Notification通知用户接收到重要消息(Notification能够通过多种方式提示用户,包括闪动背景灯,震动设备,发出声音或在状态栏上放置一个图标) 有两种注册方法,静态在xml文件中注册,动态在代码中注册

  • ContentProvider :是Android系统提供的一种标准的共享数据的机制,其他程序通过ContentProvider访问程序的私有数据。Android系统内部提供一些内置的ContentProvider,能够为应用程序提供重要的数据信息(联系人信息、通话记录)

  • 四大组件的共性: 组件都是程序入口、都需要在AndroidManifest.xml中声明,因为都是系统调用(唯一共性:注册)

在这里插入图片描述

Android系统的进程优先级

从高到低分别为:

  • 前台进程(高)
  • 可见进程(中)
  • 服务进程(中)
  • 后台进程(低)
  • 空进程 (低)

在这里插入图片描述

Activity生命周期*

activity的生命周期指的是Activity从启动到销毁的过程

activity表现为四种状态:

  • 活动状态:activity在最上层,能够杯用户看到,并且能进行交互

  • 暂停状态:在界面上被部分遮挡,不能与用户进行交互

  • 停止状态:完全不能被用户看到,被其他的activity遮挡,不可交互

  • 非活动状态:不在上面三种就在这种状态下。上面三种为主要状态

    在这里插入图片描述

activity栈

遵循先进先出规则,暂停或停止状态的activity位于底层就会被终止并释放资源转为非活动状态。

在这里插入图片描述

Activity的主要事件回调函数

随着activity自身状态的变化,Android系统会调用不同的事件回调函数。

主要事件回调函数有:

函数是否可终止说明
onCreate()启动后第一个调用的函数,用来进行activity的初始化(创建View、绑定数据)
onStart()当Activity显示在屏幕上时,该函数被调用
onRestart()当Activity从停止状态下进入活动状态前,调用该函数
onResume()当Activity可以接收用户输入时,该函数被调用,此时Activity位于Activity栈的栈顶
onPause()当Activity进入暂停状态时,该函数被调用。用于保存数据,关闭动画,释放cpu资源。该函数必须简短,因为另一个Activity必须等该函数执行完毕后才能在界面显示
onStop()当Activity不对用户可见后,该函数被调用,Activity进入停止状态
onDestroy()在Activity被终止前,也就是进入了非活动状态前,该函数被调用有两种情况下该函数会被调用:1.当程序调用finish()函数 2.程序被android系统中介。
android程序的特点
  • 填空式的程序设计
  • 生命周期函数和事件处理函数

Activity事件回调函数的调用顺序*

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


第五章 Android用户界面

Android用户界面的特点:
1.View Tree
2.单线程用户界面

主线程调用回调函数不会被打断,并且不会资源缺失。(缺点就是不能做耗时,因为是单线程要是主线程上做耗时的操作便会堵塞整个线程)

MVC模型(重!!!)

Android用户界面框架采用的是MVC(Model-View-Controller)模型。为用户提供了用于处理用户输入的控制器(Controller);显示图像的视图(View);模型(Model)是应用程序的核心,用于保存数据和代码。

在这里插入图片描述

视图树(View Tree)模型 (重!!)

Android用户界面框架采用的是视图树模型,以下是相关概念|

  • 视图树由View和ViewGroup构成
  • View是最基本的可视单位,所有在界面上可见元素都是View的子类。
  • ViewGroup是一种能够承载多个View的显示单元
  • Android系统会依据视图树的结构从上至下绘制每一个界面元素,每个元素负责对自身的绘制,如果包含有子元素,父元素会停止绘制子元素区域,通知子元素绘制,以提高屏幕绘制的效率,缩短绘制时间。
单线程用户界面
  • 控制器从队列中获取事件和视图在屏幕上绘制用户界面,使用的都是同一个线程。
  • 特点:处理函数具有顺序性,能够降低应用程序的复杂度,同时也能降低开发的难度。
  • 缺点:如果事件处理函数过于负责,可能会导致用户界面失去响应。
界面控件
TextView和EditText

EditText继承于TextView

Button 和ImageButton

这两个控件无继承关系

ListView

List → \rightarrow Adapter → \rightarrow adapterView → \rightarrow (getView()) Adapter

ListView 是一个垂直显示的列表控件,如果内容过多就会出血垂直滚动条,ListView能够通过适配器将数据和自身绑定,显示内容;还支持点击事件;

常用的7种界面布局
  • 线性布局(LinearLayout):根据不同的排列,每行(列)仅包含一个界面元素
  • 框架布局(FrameLayout):如果有多个子元素,后放置的子元素将遮挡先放置的子元素。
  • 表格布局(TableLayout):网格的边界对用户不可见,网格布局支持嵌套(可以在其中添加其他界面布局)。
  • 相对布局(RelativeLayout):能够最大程度保证在各种屏幕尺寸的手机上正确显示界面布局。
  • 绝对布局(AbsoluteLayout):必须要指定坐标。不推荐,不能适应变化。
  • 网格布局(GridLayout):将界面划分成多个块,这些块是根据界面元素动态划分的。
  • 约束布局(ConstraintLayout):约束,就是要定义控件在某方面与其他控件的对其或者距离关系。

在这里插入图片描述

菜单
  • 应用程序种非常终于的组成部分
  • 在不占用界面空间的前提下,为应用程序提供了统一的功能和设置界面
  • 为程序开发人员提供了易于使用的编程接口

Android支持三种菜单:

  • 选项菜单
  • 子菜单
  • 快捷菜单
Fragment*

Fragment具有与Activity类似的生命周期,但比Activity支持更多的时间回调函数。

在这里插入图片描述

通常情况下,创建Fragment需要继承Fragment的基类,并至少实现**onCreate()、onCreateView()、和onPause()**三个生命周期的回调函数。

  • onCreate():是在Fragment创建时被调用,用来初始化Fragment种的必要组件;
  • onCreateView():是Fragment在用户界面上第一次绘制时被调用,并返回Fragment的根布局视图;
  • onPause():是在用户离开Fragment时被调用,用来存Fragment中用户输入或修改的内容;

使用方法: 静态、动态

按键事件
  • 如果界面控件设置了事件监听器,则事件将先传递给事件监听器。
  • 相反,如果界面控件没有设置事件监听器,界面事件则会直接传递给界面控件的其他事件处理函数。

第六章 组件通信与广播消息

在这里插入图片描述

组件都是程序的入口
Intent

Intent是一种轻量级的消息传递机制,可以在同一个应用程序内部的不同组件之间传递信息,也可以在不同应用程序的组件之间传递信息,还可以作为广布事件发布Android系统消息。(可以进程内也可以进程外)

Intent支持显示或隐式启动组件,显示启动需要指明需要加载组件的类隐式启动则无需指明具体的类,只要提供需要处理的数据或动作即可

Intent的用途
  • 启动Activity和Service
  • 在Android系统上发布广播消息
启动Activity

显示启动

  • 使用Intent显示启动Activity
  • 创建一个Intent
  • 指定当前的应用程序上下文以及要启动的Activity
  • 把创建好的Intent作为参数传递给startActivity()方法

在这里插入图片描述

MainActivity.java

package com.example.myapplication;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {
    EditText tv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button = findViewById(R.id.Bt_login);
        tv= findViewById(R.id.Edit_n);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intt = new Intent(MainActivity.this,MainActivity2.class);
                startActivityForResult(intt,0);
                //startActivityForResult(intt,0);

            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 0){
            tv.setText(data.getStringExtra("name"));
        }

    }
}

MainActivity2.java

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity2 extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        Button bt = findViewById(R.id.Btn_return);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                EditText et = findViewById(R.id.Edit_Name);
                Intent result = new Intent();
                result.putExtra("name",et.getText().toString());
                setResult(0,result);

                finish();
            }
        });
    }
}

在这里插入图片描述

在这里插入图片描述

Intent过滤器

Intent过滤器是一种根据Intent中的动作(action)、类别(category)和数据(data)等内容,对适合接收Intent的组件进行匹配和筛选的机制。


第七章 后台服务

在这里插入图片描述

Service 生命周期*

在这里插入图片描述

在这里插入图片描述

使用线程
  • 使用线程的两个基本原则:
    • 不能堵塞主进程
    • 不能在公共线程中使用jar包(不要在UI线程之外访问Android UI 工具包)

在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值