1、安卓基础


前言

开启Android复习生涯,真的是所有东西忘得一滴不剩。


一、Android四大组件?

Android系统四大组件分别是活动(Activity)服务(Service)广播接收器(Broadcast Receiver)内容提供器(Content Provider)

  • 活动可以看成是安卓系统的根本,在这个根本上才可以进行其他的工作,因为在安卓系统里运行的所有的程序,它的流程都必须在【活动】中运行,所有他是最基本的模块。它的作用是一个框架或页面,每个程序会有多个【活动】组成。
  • 服务就比较低调了,你无法看到它,但它会一直在后台默默地运行,即使用户退出了应用,服务仍然是可以继续运行的。它的作用就是与安卓的其他逐渐进行交互,举个简单例子:当我们打开手机上音乐播放器并将它放到后台,此时播放的音乐就是由Service在负责控制。
  • 广播接收器可以允许你的应用接收来自各处的广播消息,比如电话、短信等,当然你的应用同样也可以向外发出广播消息。
  • 内容提供器则为应用程序之间共享数据提供了可能,比如你想要读取系统电话簿中的联系人,就需要通过内容提供器来实现。

注意:使用之前,我们需要在Android manifest.xml中先注册,然后才可以开始使用它的各种组件。

二、安卓的日志工具Log

  • Log.v()
    这个方法用于打印那些最为琐碎的,意义最小的日志信息。对应级别 verbose,是Android 日志里面级别最低的一种。
  • Log.d()
    这个方法用于打印一些调试信息,这些信息对你调试程序和分析问题应该是有帮助的。对应级别 debug,比 verbose 高一级。
  • Log.i()
    这个方法用于打印一些比较重要的数据,这些数据应该是你非常想看到的,可以帮你分析用户行为的那种。对应级别 info,比 debug 高一级。
  • Log.w()
    这个方法用于打印一些警告信息,提示程序在这个地方可能会有潜在的风险,最好去修复一下这些出现警告的地方。对应级别 warn,比 info 高一级。
  • Log.e()
    这个方法用于打印程序中的错误信息,比如程序进入到了 catch 语句当中。当有错误信息打印出来的时候,一般都代表你的程序出现严重问题了,必须尽快修复。对应级别 error,比 warn 高一级。

三、为什么使用 Log 而不使用 System.out

  • 在 LogCat 中是可以很轻松地添加过滤器的,还可以自定义过滤器
    在这里插入图片描述
  • 日志级别控制的好处就是,你可以很快地找到你所关心的那些日志。相信如果让你从上千行日志中查找一条崩溃信息,你一定会抓狂的吧。而现在你只需要将日志级别选中为 error,那些不相干的琐碎信息就不会再干扰你的视线了。

四、Intent

  • Intent 是 Android 程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。Intent 一般可被用于启动活动、启动服务、以及发送广播等场景。
    比如我们已经设置了主活动,还行在设置一个活动,这时可以使用Intent将两个活动绑定在一起(注意:在创建活动之后,都要在AndroidManifest.xml中进行设置)

Intent分为显式 Intent隐式 Intent

  • 显式 Intent使用如下例。

在这里插入图片描述

  • 相比于显式 Intent,隐式 Intent 则含蓄了许多,它并不明确指出我们想要启动哪一个活动,而是指定了一系列更为抽象的 action和 category 等信息,然后交由系统去分析这个 Intent,并帮我们找出合适的活动去启动。
    在这里插入图片描述

先配置intent-filter的内容,在action标签中我们指明了当前活动可以响应 com.example.activitytest.ACTION_
START 这个 action,而category标签则包含了一些附加信息,更精确地指明了当前的活动能够响应的 Intent 中还可能带有的 category。

  • 比如向另一个活动传递数据,返回数据给上一个活动,都可以使用Intent(有点像分布式中学过的中间件了)

五、活动的生命周期

活动更多的处于四个状态。

  • 1、运行状态:当一个活动位于返回栈的栈顶时,这时活动就处于运行状态。

  • 2、暂停状态:当一个活动不再处于栈顶位置,但仍然可见时,这时活动就进入了暂停状态。

  • 3、停止状态:当一个活动不再处于栈顶位置,并且完全不可见的时候,就进入了停止状态。

  • 4、销毁状态:当一个活动从返回栈中移除后就变成了销毁状态。

  • (1)onCreate()
    这个方法已经看到过很多次了,每个活动中我们都重写了这个方法,它会在活动第一次被创建的时候调用。你应该在这个方法中完成活动的初始化操作,比如说加载布局、绑定事件等。

  • (2)onStart()
    这个方法在活动由不可见变为可见的时候调用。

  • (3)onResume()
    这个方法在活动准备好和用户进行交互的时候调用。此时的活动一定位于返回栈的栈顶,并且处于运行状态。
    比如做一个音乐播放程序,在播放过程中,突然有电话打进来了,这时系统自动调出电话,而你的音乐播放程序置于后台,触发了onPause方法。当你电话结束后,关闭电话,又自动回到音乐播放程序,此时,触发onResume方法,这时,如果你之前在onPause的时候记录了播放点,就可以在onResume方法里来继续播放。

  • (4)onPause()
    这个方法在系统准备去启动或者恢复另一个活动的时候调用(由一个Activity转到另一个Activity)。我们通常会在这个方法中将一些消耗 CPU 的资源释放掉,以及保存一些关键数据,但这个方法的执行速度一定要快,不然会影响到新的栈顶活动的使用。

  • (5)onStop()
    这个方法在活动完全不可见的时候调用。它和 onPause()方法的主要区别在于,如果启动的新活动是一个对话框式的活动,那么 onPause()方法会得到执行,而 onStop()方法并不会执行。

  • (6)onDestroy()
    这个方法在活动被销毁之前调用,之后活动的状态将变为销毁状态。

  • (7)onRestart()
    这个方法在活动由停止状态变为运行状态之前调用,也就是活动被重新启动了。
    在这里插入图片描述
    举例子
    1、启动一个A Activity:分别执行onCreate()、onStart()、onResume()方法。
    2、从A Activity跳转到B Activity
    分别执行A onPause()、B onCreate()、B onStart()、B onResume()、A onStop()方法。
    3、关闭B Activity
    分别执行B onPause()、A onRestart()、A onStart()、A onResume()、B onStop()、B onDestroy()方法。

六、活动的启动模式

  • Standard 标准模式
    这是android的默认启动方式,即使不在AndroidManifest.xml里面设置launchMode,也是默认的这个模式。每次启动一个A activity都会创建一个A activity的实例入栈,无论A activity是否存在。
    举个例子:任务栈中有A、B、C三个activity,此时C处于栈顶,C的启动模式为Standard。若C跳转到 C;结果还会有一个C activity进入栈中,成为栈顶。
  • SingleTop栈顶复用模式
    此模式分为2中情况:(1)如果需要创建的activity已经位于栈顶,此时直接复用该栈顶activity,不再创建新的activity;(2)如果要创建的activity不处于栈顶,此时才会创建一个新的activity入栈,同Standard一样。
    举个栗子:activity栈中有三个activity,分别是A、B、C。C处于栈顶,且为SingleTop模式。(1)情况1,C中加入点击
  • SingleTask栈内复用模式
    如果创建的A activity已经处于栈中,此时不会创建新的Activity,而是会将A activity上面的其他activity摧毁,使得A成为栈顶。
    举个栗子:此时有A、B、C三个activity,C位于栈顶,启动模式为SingleTask。(1)情况一,C中加入点击事件,跳转到C,此时直接复用栈顶的C Activity。(2)情况二,C跳到A ,会将A之上的所有activity销毁,使A成为 栈顶。
  • SingleInstance单实例模式
    全局单例模式,加强版的SingleTask模式。具有所有SingleTask的特性,除此之外,改模式的activity仅仅能单独位于一个任务栈中,这个经常应用于系统的应用中,如,锁屏,Launch等等,整个系统中仅仅有一个。

总结

这些内容面试会经常被问到的,可以参考一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值