移动应用开发期末总结

移动应用开发

什么是intent?(问答题)

Intent是一个动作的完整描述,包含了动作的产生组件、接收组件和传递的数据信息。Intent为Activity、Service和BroadcastReceiver等组件提供交互能力,将一个组件的数据和动作传递给另一个组件。Intent的一个最常见的用途就是启动Activity和Service;另一个用途是在Android系统上发布广播消息,广播消息可以是接收到特定数据或消息,也可以是手机的信号变化或电池的电量过低等信息。

什么是intent-filter,作用是什么?

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

Intent过滤器的作用是匹配数据类型、路径和协议,还包括可以用来确定多个匹配项顺序的优先级。每个Intent过滤器可以定义多个标签,程序开发人员可以使用自定义的类别,或使用Android系统提供的类别。

Android的体系结构分成几层?每一层的作用?(问答题)P13

  • Android是基于Linux内核的软件平台和操作系统,采用了软件堆层的架构,共分为4层。
  • 第一层是Linux内核,提供有操作系统内核管理的底层基础功能;
  • 第二层是中间件层,有函数库和Android运行时构成(Android运行时有核心库和ART虚拟机构成,ART虚拟机采用预编译(AOT)技术,在应用程序安装时把程序代码转换成机器语言);
  • 第三层是应用程序框架,提供了Android平台基本的管理功能和组件重用机制;
  • 第四层是应用程序层,提供一系列核心应用程序。

Android四大组件是什么?每种组件的用途?(Activity,Service,Broadcast receiver,Content provider)P67(问答题,选择题)

  • Android系统有4个重要的组件,分别是Activity,Service,Broadcast receiver,Content provider。
  • Activity是Android程序的呈现层,显示可视化的用户界面,并接收与用户交互所产生的界面事件,与“窗体”概念相似。
  • Service一般用于没有用户界面,但需要长时间在后台运行的应用。
  • Broadcast receiver是用来接收并响应广播消息的组件。(不包含任何用户界面,但可以通过启动Activity或者Notification通知用户收到重要消息)
  • Content provider是Android系统提供的一种标准的共享数据的机制,应用程序可以通过Content provider访问其他应用程序的私有数据。

Activity生命周期的四种状态P68

  • 活动状态,当Activity在用户界面处于最上层,完全能被用户看到,能与用户进行交互,则这个Activity处于活动状态。
  • 暂停状态,当Activity在界面上被部分遮挡,该Activity不在处于用户界面的最上层,且不能够与用户进行交互,则这个Activity处于暂停状态。
  • 停止状态,当Activity在界面上完全不能被用户看到,也就是说这个Activity被其他Activity全部遮挡,则这个Activity处于停止状态。
  • 非活动状态,不处于以上三种状态的Activity则处于非活动状态。

常见的数据存储方式的特点(SharedPreference,文件存储,SQLite各自的特点)

  1. SharedPreferences是一种轻量级的数据保存方式。通过SharedPreferences开发人员可以将NVP(Name/Value Pair,名称/值对)保存在Android的文件系统中,而且SharedPreferences完全屏蔽了对文件系统的操作过程。开发人员仅通过调用SharedPreferences中的函数就可以实现对NVP的保存和读取。SharedPreferences不仅能够保存数据,还能够实现不同应用程序间的数据共享
  2. 文件存储:Android使用Linux文件系统,开发人员可以建立和访问程序自身建立的是有文件,也可以访问保存在资源目录中的原始文件和XML文件,还可以将保存在TF卡等外部存储设备中。
  3. 轻量级数据库SQLite的特点:比传统数据库更适合用于嵌入式系统;占用资源少,运行高效可靠,可移植性强;提供了零配置(zero-configuration)运行模式;支持多种开发语言,C, C++, PHP, Perl, Java, C#,Python, Ruby等

匹配规则P156

  1. Android系统把所有应用程序包中的Intent过滤器集合在一起,形成一个完整的Intent过滤器列表;
  2. 在Intent与Intent过滤器进行匹配时,Android系统会将列表中所有Intent过滤器的“动作”和“类别”与Intent进行匹配,没有指定“动作”的Intent过滤器可以匹配任何的Intent,但是没有指定“类别”的Intent过滤器只能匹配没有“类别”的Intent;
  3. 把Intent数据Uri的每个子部与Intent过滤器的标签中的属性进行匹配;
  4. 如果Intent过滤器的匹配结果多于一个,则可以根据在标签中定义的优先级标签来对Intent过滤器进行排序,优先级最高的Intent过滤器将被选择。以上每步中不匹配的都将被过滤掉。

如何发送接收广播

  • sendBroadcast发送出去的Intent,对于所有满足条件的BroadcastReceiver都会执行其onReceive方法。但若有多个满足条件的

    BroadcastReceiver,其执行onReceive方法的顺序是没有保证的。

  • 使用Intent发送广播消息非常简单,只需创建一个Intent,并调用sendBroadcast()函数就可把Intent携带的信息广播出去。

  • 但需要注意的是,在构造Intent时必须定义一个全局唯一的字符串,用来标识其要执行的动作通常使用应用程序包的名称。

  • 如果要在Intent传递额外数据,可以用Intent的putExtra()方法。

广播接收器重写

创建MyBroadcastReceiver类继承 BroadcastReceiver来重写里面的OnReceiver方法代码如下

 
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
 
public class MyBroadcastReceiver extends BroadcastReceiver {
 
    static final String ACTION="android.intnet.action.BOOT_COMPLETED";
    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO: This method is called when the BroadcastReceiver is receiving
        // an Intent broadcast.
       if(intent.getAction().equals(ACTION)){
           Intent intent1=new Intent(context,MainActivity.class);
           intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
 
           context.startActivity(intent1);//用来传递消息
       }
 
    }
}
  • 5
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kdcarry

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值