移动应用开发学习通测试题答案

移动应用开发期末复习

第一章——开启Android之旅
第二章—布局
第三章—控件
第四章—Activity
第五章—数据存储
第六章—BroadcastReceiver
第七章—Service


第一章——开启Android之旅


1.Dalvik虚拟机是基于( 寄存器 )的架构。

2.Android系统采用分层架构,由高至低分别为:( 应用程序 )、( 应用程序框架)、( 核心类库 )和( Linux内核)。

3.在Android智能终端中,有许多应用,如拍照,管理联系人等,它们都属于(应用程序)层。

4.Android的分层框架中,应用框架层使用(Java)语言或Kotlin语言开发,核心类库使用(C/C++)语言开发。


5.Android操作系统的主要特点(ABC)。

  • ​ A、与Google无缝结合

  • ​ B、实现个性化应用

  • ​ C、良好的平台开放性

  • ​ D、软件均要消费

6.Android操作系统的手机可以有以下几个方法进行软件安装(ABCD)。

  • ​ A、通过手机直接登录百度网站下载安装

  • ​ B、通过手机直接登录Android门户网站进行下载安装

  • ​ C、通过数据线与电脑连接直接下载安装

  • ​ D、通过PC终端上网下载至SD卡里再插入手机进行安装


第二章—布局


1.创建程序时,填写的Package Name表示( 项目的包名 )。

2.创建程序时,填写的Project Name表示( 项目名称 )。

3.创建程序时,填写的Application Name表示(应用名称)。

第三章—控件


1.Android中有许多控件,这些控件都继承自(View)类。

2.在底部导航栏布局文件中,使用(ImageView)控件显示底部按钮的图片部分。

3.在“我”的界面中,有三条灰色的分割线是用(View)控件实现的。

4.在设置界面逻辑代码中,设置(修改密码)的点击事件,实现当点击修改密码时跳转到修改密码界面。

5.在注册界面的布局文件中,通过(<include>)标签将main_title_bar.xml(标题栏)引入

6.下列代码中,用于将TextView设置为隐藏状态的是(android:visibility=“gone”)。


7.创建ListView的布局界面必须通过(android:id)属性才能使数据显示在界面上。

8.(EditText)件可以输入文字,且可以通过inputType属性控制输入的内容只能是数字或者字母等。

9.在登录界面中使用(TextView)控件用于显示文字“立即注册”和“找回密码?”。

10.在注册界面逻辑中,通过输入的用户名查询(SharedPreferences)中是否已经存在该用户。

11.android:visibility="gone"属性用于设置控件为(隐藏)状态。


12.使用ListView显示较为复杂的数据时最好用ArrayAdapter适配器。( ❌)

13.在登录界面逻辑代码中,调用et_user_name控件的setSelection()方法来设置光标位置。(✔️)

14.在登录逻辑代码中,调用startActivity()方法跳转到注册界面,目的是从注册界面回传数据到登录界面。(❌)

15.监听EditText控件的输入文字需要在onTextChanged()方法中监听EditText的输入状态。(✔️)

16.在个人资料修改页面标题栏右上角的“保存”的文本框默认是显示状态。(❌)


第四章—Activity

1.Activity获取焦点时执行方法是(B)。
  • A、onStart()
  • B、onResume()
  • C、onPause()
  • D、onDestroy()

2.**startActivityForResult()**方法接收两个参数,第一个是Intent,第二个是(C)

  • A、resultCode
  • B、requestCode
  • C、请求码
  • D、data

3.Activity的4种启动模式是(standard)、(singleTop)、(singleTask)、(singleInstance)。

4.Android中Intent寻找目标组件的方式分为两种,分别是显式Intent隐式Intent


5.Activity中AndoidManifest.xml中注册时的节点名称为****(✔️)

6.Android的4大组件是activity、service、content provider、broadcast receiver。(✔️)

7.Activity默认的启动模式是singleTop模式。(❌)

8.Intent一般只用于启动Activity不能开启广播和服务。(❌)


9.请写出Activity生命周期中,哪些方法是Activity处于活动状态时的?

  • 我的答案:

    onResume()、onPause()

10.现有两个界面ActivityA和ActivityB,欲完成从ActivityA到ActivityB的跳转,请简述使用Intent完成此跳转的过程。

  • 我的答案:

    Intent i = new Intent(ActivityA.this,ActivityB.class);

    startActivity(i);


第五章—数据存储


1.下列代码中,关于文件存储数据的说法错误的是(D)。

  • A、文件存储是以流的形式来操作数据的
  • B、文件存储可将数据存储到SD卡中
  • C、文件存储可将数据存储到内存中
  • D、Android程序中只能使用文件存储数据

2.使用SQLite数据库进行查询后,必须要做的操作是(D)。

  • A、关闭数据库
  • B、直接退出
  • C、使用quit函数退出
  • D、关闭Cursor

3.Android中的数据存储方式主要有5种,分别是文件存储SharedPreferencesSQLiteContentProvider网络存储

4.SharedPreference是一个轻量级的存储类,主要用于存储一些应用程序的(配置信息)。

5.使用SharedPreferences存储数据时,有2种操作模式,一种是私有方式存储MODE_PRIVATE),另一种是追加方式存储MODE_APPEND

6.SQLite中可存储的数据类型有nullintegerreal、(text)和Blob


7.使用SharedPreferences存储文件时,只能采用私有方式存储,不能使用别的方式存储。(❌)

8.文件存储是通过I/O流的形式把数据原封不动的存储到文档中。(❌)

9.SQLite只支持NULLINTEGER、REAL、TEXTBLOB等5种数据类型。(✔️)

10.SQLite数据库使用完后不需要关闭,不影响程序性能。(❌)

11.SQLite既支持Android的API又支持SQL语句进行增、删、改、查操作。(✔️)


12.请简要说明SQLite数据库创建的过程

  • 我的答案:

    首先创建一个类继承SQLiteOpenHelper,重写onCreate()方法并在该方法中创建表,使用创建出的SQLiteOpenHelper的子类对象的==getReadableDatabase()==方法获得一个可读写的数据库对象。


第六章—BroadcastReceiver


1.关于有序广播和无序广播说法不正确的是(C)。

  • A、广播分有序广播和无序广播
  • B、有序广播可以被拦截
  • C、无序广播可以被拦截
  • D、高优先级的广播接收者可以先接收到有序广播

广播:发布者、接受者;

有序广播是一种同步执行的广播,在广播发出之后,同一时刻只会有一个广播接收器能够收到这条广播消息,当这个广播接收器中的逻辑执行完毕后,广播才会继续传递。此时的广播接收器是有先后顺序,优先级高的广播接收器就可以先收到广播消息,并且前面的广播接收器还可以截断正在传递的广播,这样后面的广播接收器就无法收到广播消息了。想要拦截一条广播不往下发送,可以使用abortBroadcast****()

有序广播

无序广播是一种完全异步执行的广播,在广播发出~去之后,所有的广播接收器几乎同时接收到这条广播消息,它们之间没有任何项目顺序可言。这种广播的效率比较高,但也意味着它是无法被截断的。

无序广播

2.广播接收者按照级别来分,可以分为系统广播自定义广播。(✔️)

3.有序广播和无序广播都可以被拦截。(❌)==>例如:拼多多的垃圾信息

4.每个广播只能使用一个广播接收者接收。(❌)==>例如:拼多多的垃圾信息群发

5.广播接收者发送的广播是无序的,不存在有序的情况。(❌)

6.接收系统短消息广播时,在注册广播接收者时,设置action的值为:android.provider.Telephony.SMS_RECEIVE。(❌)==>正确答案:android.provider.Telephony.SMS_RECEIVED

7.如果两个广播接收者的优先级相同,则先注册的广播接收者优先接收到消息。(✔️)


8.注册广播(了解)

  • 我的答案:

    注册广播

第七章—Service


1.绑定服务时,必须要实现服务的**onBind()**方法。

2.当客户端与服务器端建立连接后,向服务器端发送的请求,被称为HTTP请求。

3.在进行远程服务通信时,需要使用AIDL接口。

4.启动服务有两种方法,分别是**startService()方法和bindService()**方法。

在安卓里面,大家注意:有的是以界面方式来呈现出来,有的是不可呈现的方式。

服务(Service)是Android中实现程序后台运行的解决方案,它非常适合去执行那些不需要和用户交互而且还要求长期运行的任务。服务的运行不依赖于任何用户界面,即使程序被切换到后台,或者用户打开了另外一个应用程序,服务仍然能够保持正常运行。

不过需要注意的是,服务并不是运行在一个独立的进程当中的,而是依赖于创建服务时所在的应用程序进程。与某个应用程序进程被杀掉时,所有依赖于该进程的服务也会停止运行。另外.也不要被服务的后台概念所迷惑,实际上服务并不会自动开启线程,所有的代码都是默认运行在主线程当中的。也就是说,我们需要在服务的内部手动创建子线程,并在这里执行具体的任务,否则就有可能出现主线程被阻塞住的情况。

  1. service用于在后台完成用户指定的操作。service分为两种:
  • started(启动):当应用程序组件(如activity)调用startService()方法启动服务时,服务处于started状态。

  • bbound(绑定):当应用程序组件调用bindService()方法绑定到服务时,服务处于bound状态。

  1. startService()与bindService()区别:
  • started service(启动服务)是由其他组件调用startService()方法启动的,这导致服务的onStartCommand()方法被调用。当服务是started状态时,其生命周期与启动它的组件无关,并且可以在后台无限期运行,即使启动服务的组件已经被销毁,就是启动组件和服务是分离状态。因此,服务需要在完成任务后调用stopSelf()方法停止,或者由其他组件调用stopService()方法停止。
  • 使用bindService()方法启用服务,调用者与服务绑定在了一起,调用者一旦退出,服务也就终止,大有“不求同时生,必须同时死”的特点。

5.所有创建的服务类都只能继承Service。(❌)

6.通过IntentService的继承类实现命令触发的服务,也可以直接通过Service的继承类来实现。(✔️)


7.现已完成以startService()方式启动服务的功能,并使用LogCat并服务中涉及到生命周期中的方法名均已输出打印。试问:

  1. 当点击图中“START方式启动服务”时,会输出服务中哪些生命周期中的方法?

  2. 再次点击“START方式启动服务”时,又会输出哪些与生命周期相关的方法?

  3. 当点击“START方式停止服务”时,会输出服务中哪些与生命周期相关的方法?

ServiceExer
  • 我的答案
  1. onCreate()–>onStartCommend()
  2. onStartCommend()
  3. onDestroy()
image-20220610232532984

需要注意的有:

  1. 如果是调用者直接退出而没有调用stopService的话,那么被启动的Service会一直在后台运行,直至它的stopService方法被调用,或者它自己调用stopSelf方法。

  2. 在服务未被创建时,系统会先调用服务的onCreate方法,接着调用onStartCommand方法。如果调用startService方法前服务已经被创建,那么会再次调用onStartCommand方法。并且,不管调用了多少次onStartCommand方法,只需要一次stop便可以将相应的service关闭。

8.说明本地服务通信的过程。

  • 我的答案:

    在使用服务进行本地通信时,首先需要创建一个Service类,该类会提供一个onBind()方法,返回值是一个IBinder对象,IBinder对象会作为参数传递给ServiceConnection类中onServiceConnected()方法,这样访问者就可以通过IBinder对象与Service进行通信

  • 8
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是一些常见的Uni App面试问题及其答案: 1. 什么是Uni App? Uni App是一种全新的跨平台开发框架,可以快速地开发出同时支持多个平台的应用程序。Uni App基于Vue.js框架,可以使用一份代码来开发出iOS、Android、H5、小程序等多个平台的应用。 2. 你有使用过Uni App吗? 如果有,可以简要介绍一下使用Uni App的经验和感受;如果没有,可以说明对Uni App的了解和学习计划。 3. 你对移动开发的看法是什么? 可以从以下几个方面回答这个问题: - 移动设备已经成为了人们日常生活中必不可少的工具,移动应用的市场需求非常大。 - 移动开发可以让我们的工作更加高效,同时也可以满足用户的需求,提升用户体验。 - 移动开发的技术不断更新,需要不断学习和掌握新的技能。 4. 你在移动开发中遇到过哪些具有挑战性的问题? 可以从以下几个方面回答这个问题: - 不同的平台有不同的API和UI规范,需要对每个平台进行适配和优化。 - 移动设备的性能和资源有限,需要考虑如何优化应用程序的性能和资源占用。 - 移动设备的网络环境不稳定,需要考虑如何优化应用程序的网络请求和数据传输。 5. 你对前端技术有哪些了解? 可以从以下几个方面回答这个问题: - HTML、CSS和JavaScript是前端技术的基础,需要对它们进行深入学习和理解。 - 前端框架和库如Vue.js、React等可以帮助我们更加高效地开发应用程序。 - 前端工具如Webpack、Babel等可以帮助我们更加高效地管理和打包应用程序。 - 前端的性能优化、安全性等方面也需要进行深入的研究和学习。 6. 你在团队中扮演的角色是什么? 可以从以下几个方面回答这个问题: - 我常会扮演开发者的角色,负责应用程序的设计、开发和测试。 - 我也会尝试扮演一些协调者的角色,帮助团队成员协调沟,解决问题。 - 我也会尝试扮演一些导师的角色,帮助团队成员学习和掌握新的技能。 7. 你最近在学习什么新的技术? 可以从以下几个方面回答这个问题: - 我最近在学习Vue.js 3.0的新特性,包括Composition API、Teleport等。 - 我也在学习Flutter和React Native等跨平台开发框架,希望能够更加深入地了解移动开发的技术和趋势。 - 我还在学习一些关于前端性能优化和安全性方面的知识,希望能够为团队带来更多的价值。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

roydon_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值