Activity
单选题
下列方法中,Activity从启动到关闭不会执行的是()D
- A、onCreate()
- B、onStart()
- C、onResume()
- D、onRestart()
解析:
Activity开始启动时会执行A->B->C,C就是获得聚焦时候(也可以通俗理解为在你看得到的最前面),而D只有在后台程序切换回前台时候才会执行
startActivityForResult()方法接收两个参数,第一个是Intent,第二个是()C
- A、resultCode
- B、requestCode
- C、请求码
- D、data
解析:
我也不知道为什么不能是B?总之,intent是为了页面跳转,请求码是为了判断响应的数据来源
填空题
- Activity生命周期中“回到前台,再次可见时执行”时调用的方法是【】onRestart()
- Android提供了一个【】方法来实现数据回传 setResult()
解析:
一般响应流程大致是这样的:
Intent intent = new Intent();
intent.putExtra("data","response"); // 创建Intent并填充
setResult(RESPONSE_CODE,intent); // 设置响应码和响应体
finish(); // 销毁这个Activity
简答题
简述Activity四种启动模式区别
- Standard:每当启动一个新的Activity, 它就会进入任务栈,并处于栈顶的位置,对于使用standard模式的Activity,系统不会判断该Activity 在栈中是否存在,每次启动都会创建一个新的实例
- SingleTop:与standard类似,不同的是,当启动的Activity 已经位于栈顶时,则直接使用它不创建新的实例。如果启动的Activity没有位于栈顶时,则创建一个新的实例位于栈顶
- SingleTask:创建的Activity 只存在一个实例。 已经存在则直接使用该实例,并将当前Activity之上的所有Activity 出栈,如果没有发现则创建一个新的实例。
- singleInstance:启动一个新的任务栈管理Activity
简述Activity 的三种状态及其使用方法
- 运行状态:该状态下可以对界面进行操作
- 暂停状态:界面可见但不具有焦点无法点击
- 停止状态:界面不可见,一般在停止状态时保存数据以防止程序被系统强制杀死
简述Activity的生命周期的方法有哪些
答:
- onCreate(): Activity创建时调用,通常做一些初始化设置。
- onStart(): Activity 即将创建时调用。
- onResume(): Activity 获取焦点时调用。
- onPause():当前Activity被其他Activity覆盖或屏幕锁屏时调用。
- onStop(): Activity 对用户不可见时调用。
- onDestroy(): Activity 销毁时调用。
- onRestart(): Activity 从停止状态到再次启动时调用。
简述Activity、Intent、IntentFilter的作用
答:
Activity 表示活动,他是Android的四大组件之一,Intent 表示意图,IntentFilter表示过滤器、他们的作用具体如下:
- Activity是一个负责与用户交互的组件,每个Android应用中都会用Activity来显示界面以及处理界而上一些控件的事件
- Intent被称为意图,是程序中各组件间进行交互的一种重要方式,它不仅可以指定当前组件要执行的动作,还可以在不同组件之间进行数据传递
- IntentFilter为过滤器,当发送一个隐示lntent后,Android系统会将它与程序中的每一个组件的过滤器进行匹配,匹配属性有action、data、category,需要三者都匹配成功才可以
简述Fragment生命周期的三种状态
- 运行状态:当一个Fragment是可见的,并且它所关联的Activity正处于运行状态,那么该Fragment也处于运行状态。
- 暂停状态:当一个Activity进入暂停状态(另一个未占满屏幕的Activity并添加到了栈顶时),与它相关联的可见Fragment也会进入暂停状态。
- 停止状态:当一个Activity 进入停止状态时,与它相关联的Fragment就会进入到停止状态。或者通过调用FragmentTransaction的remove()、replace()方法将Fragment从Activity中移除。如果在事务提交之前调用addToBackStack()方法,这时的Fragment也会进入到停止状态。
数据存储
单选题
如果要将程序中的私有数据分享给别的程序,可以使用() C
- A、文件存储
- B、SharedPreferences
- C、ContentProvider
- D、SQLite
填空题
- 序列化是将对象状态转换为【】的过程。可保持或传输
- Android中的文件可以存储在【】和【】中。 内存(内部存储),SD卡(外部存储)
解析:
这里的内存是该应用程序所私有的一个存储空间,位于/data/data/< package >/files/目录下,与该应用共存亡,别的应用程序要操作这个文件的话,需要权限,这种存储方式较为安全;相反比较不安全的就是SD卡,所有应用共享的,挂载在/mnt/sdcard下。
- 通常情况下,解析XML有三种方式,分别为【】【】和【】。 DOM,SAX,PULL
- SharedPreferences是一种轻量存储,一般用来存储应用的【】。 配置参数
简答题
简述Android系统中五种数据存储方式及其特点。
- 文件存储:可以存储较大文件,以IO流形式传输数据
- Sqlite:占用内存小, 所有文件都存放在单一文件中
- 网络:通过网络将数据传输到服务器存储,避免了客户端的安全隐患
- Sharedpreference:使用方便,可以存储配置信息,以键值对的形式存于内存中
- ContentProvider:提供自身暴漏的数据给第三方应用使用,统一了数据访问格式,以数据库形式保存数据
补充:
Sharedpreference的本质其实还是个XML文件,以Map< Object, Object >形式存入文件中
因为其本身没有写功能,需要使用Editor对象操作并提交
看下代码:
SharedPreferences sp = getSharedPreferences("config", MODE_PRIVATE) ;
Editor editor = sp.edit() ;
editor.putString("a", "a") ;
editor.commit() ;
ContentProvider
单选题
下列选项中,属于在清单文件中注册内容提供者时能被其他应用程序使用的属性是() B
- A、android:enabled=“true”
- B、android:exported=“true”
- C、android:authorities=“true”
- D、以上都不正确
下列选项中,属于获取ContentResolver实例对象的是() D
- A、new ContentResolver()
- B、ContentProvider.newInstance()
- C、ContentProvider.getContentResolver()
- D、getContentResolver()
下列选项中,属于在清单文件中注册内容提供者标签的是() A
- A、< provider/ >
- B、< contentprovider/ >
- C、< content/ >
- D、以上都不对
下列选项中,属于操作Android系统短信数据库中数据的类是() B
- A、ContentProvider
- B、ContentResolver
- C、ContentObserver
- D、SQLiteDatabase
下列选项中,属于内容提供者的是() B
- A、Activity
- B、ContentProvider
- C、ContentResolver
- D、ContentObserver
解析:
A不可能选的;B是内容提供者,C是访问内容提供者暴露出来数据的中介,类似适配器,D是观察者,用于监测内容提供者提供的数据是否发生变化(其实只能观察到uri对应数据)
判断题
Uri的组成包括scheme、authority和path。(√)
解析:
scheme://authorities/path,比如:content://cn.itcast.personprovider/person(authorities和包名一致)
简答题
简述ContentProvider对外共享数据的好处。
答:统一了数据访问方式,使用起来更规范,通过数据库存储并指定了URI,只有通过特定URI才能访问数据,使数据更安全。
简述ContentProvider、ContentResolver、ContentObserver之间的关系。
答:ContentProvider可以共享自己的数据给外部应用访问,要访问ContentProvider暴漏的数据就要用到ContentResolver。而ContentObserver 就相当于中间人的角色,它可以实时监听ContentProvider的数据是否发生变化,如果发生变化就会触发onChange()方法,ContentResolver可以在onChange方法中查询的哪些数据发生了变化再对数据进行操作。