国家开放大学《Android网络开发技术》形考任务1-6参考答案_第1页
国家开放大学《Android网络开发技术》形考任务1-6参考答案_第2页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

15/15国家开放大学《Android网络开发技术》形考任务1-6参考答案题目随机,下载后利用查找功能完成学习任务形考任务1【简答题】完成以下JSON的解析,完成主体代码即可,解析方法及库不限。答:publicclassJSONObjectActivityextendsAppCompatActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_jsonobject);newThread(newRunnable(){@Overridepublicvoidrun(){//模拟进行网络请求StringjsonResult=FileUtils.readXML();parseJson(jsonResult);}).start();privatevoidparseJson(StringjsonData){Personperson=newPerson();try{JSONObjectjsonObject=newJSONObject(jsonData);//解析persons数组JSONArrayphones=jsonObject.getJSONArray("phones");person.phones=newArrayList<>();for(inti=0;i<phones.length();i++){person.phones.add((String)phones.get(i));//解析普通属性=jsonObject.getString("name");person.age=jsonObject.getInt("age");//解析addressJSONObjectaddressJson=jsonObject.getJSONObject("address");Addressaddress=newAddress();address.country=addressJson.getString("country");vince=addressJson.getString("province");person.address=address;System.out.println(person.toString());}catch(JSONExceptione){e.printStackTrace();}classPerson{List<String>phones;Stringname;intage;Addressaddress;@OverridepublicStsringtoString(){return"Person{"+"phones="+phones+",name='''+name+'\"+",age="+age+",address="+address+'}';classAddress{Stringcountry;Stringprovince;@OverridepublicStringtoString(){return"Address{"+"country='''+country+'\"+形考任务2【简答题】在AndroidManifest.xml中注册广播接收器BootBroadcastReceiver。答:BroadcastReceiver广播接收器用于监听/接受Android应用分发的各类广播并做出相应的响应应用场景:监听系统事件:如开机广播,网络链接与断开,屏幕转向灯不同组件间(Activity/Service,包括不同APP间)的通信多线程通信先自定义一个广播接收器,创建MyBroadcastReceiver类来继承广播接收器类,并实现它内部的方法publicclassMyBroadcastReceiverextendsBroadcastReceiver{@OverridepublicvoidonReceive(Contextcontext,Intentintent){广播接收器的注册方法分为静态注册和动态注册两种方式静态注册在AndroidManifest.xml文件的<application>标签内声明<!--静态注册广播接收器--><receiverandroid:name=".MyBroadcastReceiver"><!--接受哪些广播--><intent-filter><!--开机广播--><actionandroid:name="ent.action.BOOT_COMPLETED"/><!--电量低广播--><actionandroid:name="ent.action.BATTERY_LOW"/></intent-filter></receiver>完成注册后就可以在MyBroadcastReceiver类中接受广播实现相关功能publicclassMyBroadcastReceiverextendsBroadcastReceiver{privatestaticfinalStringTAG="MyBroadcastReceiver";@OverridepublicvoidonReceive(Contextcontext,Intentintent){//接受广播if(intent!=null){//接收到的什么广播(广播的名称)Stringaction=intent.getAction();Log.d(TAG,"onReceive:"+action);这里已经可以通过意图对象来接受广播信息并进行处理了动态注册动态注册在onCreate()方法里进行注册@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//新建一个广播接收器broadcastReceiver=newMyBroadcastReceiver();//要接收哪些广播IntentFilterintentFilter=newIntentFilter();///电量低广播形考任务31.SharedPreference存储数据,最后提交数据时,推荐使用()。A.commit()B.apply()C.put()D.push()2.使用SQLite读取数据内容时,用到的核心类是()。A.ContentValuesB.CursorC.SQLiteOpenHelperD.SQLite3.自定义Service时,必须实现的方法是()。A.onCreate()B.onStartCommand()C.onBind()D.onDestroy()4.使用MediaPlayer开始播放音视频的方法是()。A.prepare()B.start()C.release()D.setDataSource()5.自定义View时必须实现的方法是()。A.onMeasure()B.onDraw()C.onLayout()D.equals()6.AndroidAsyncTask异步任务中,哪个方法是运行在主线程中()A.doInBackground()B.onPreExecute()C.onPostExecute()D.onPregressUpdate()7.Android中开启事务的方法正确的是()。A.db.startTransaction()B.db.beginTransaction()C.db.endTransaction()D.intent.startTransaction()8.HTTP是万维网实现数据通信的基石。它基于()来传递数据。A.TCP/IPB.File协议C.FTPD.mailto协议9.HTTP是()。A.不保存状态的协议B.保存状态的协议C.状态不确定的协议D.以上都不对10.URL的一般格式为()A.<协议>://<端口>:<主机>/<路径>B.<协议>://<路径>:<主机>/<端口>C.<协议>://<主机>:<端口>/<路径>D.<端口>://<路径>:<主机>/<协议>11.URL(uniformresourcelocator,统一资源定位符)是互联网标准资源的地址。通过一个URL,能找到()资源。A.一个B.两个C.三个D.四个12.下列说法错误的是()A.获取HttpClient实例可以直接newHttpClient()。B.获取到HttpClient实例client后,想执行get请求,client.execute(httpGet),然后封装HttpGet。C.使用HttpClient方式进行post请求需要封装HttpPost实例。D.UrlEncodedFormEntity是将提交给服务器参数进行编码的类。13.以下是Android中用于xml解析方式的是()A.SAXB.DOMC.XmlPullParserD.Juint14.做网络图片查看器的时候,需要把获取的流信息转换为()A.StringB.intC.BitmapD.Text15.关于Android中消息机制说法正确的是()A.Handler只能用来发送消息。B.Handler是用来发送消息和处理消息的。C.MessageQueue是用来收集消息并主动发送消息。D.Looper是主消息的循环器.Looper是由handler创建的。16.利用内容解析者查询短信数据时uri怎么写()A.Uriuri=Uri.parse(“content://sms”)B.Uriuri=Uri.parse(“content://sms/data”)C.Uriuri=Uri.parse(“content://sms/contact”)D.Uriuri=Uri.parse(“sms/”)17.可以在Activity中得到ContentResolver实例对象的方法是()A.newContentResolver()B.getContentResolver()C.newInstance()D.ContentUris.newInstance()18.可以在Activity中得到ContentResolver实例对象的方法是()A.newContentResolver()B.getContentResolver()C.newInstance()D.ContentUris.newInstance()19.在下列选项中,关于内容提供者的说法错误的是()A.ContentProvider是一个抽象类,只有继承后才能使用。B.内容提供者只有在AndroidManifest.xml文件中注册后才能运行。C.内容提供者为其它应用程序提供了统一的访问数据库的方式。D.内容提供者不是抽象类。20.在下列选项中,用于查询数据的方法是()A.updateB.insertC.queryD.delete21.对于Android开发来说,()是网络开发中使用最多、最重要的网络通信方式。A.HTTPB.FTPC.TCP/IPD.FDDI22.自定义一个数据适配器MyAdatper,需要让它继承的类是()A.DefaultAdapterB.ParentAdapterC.BaseAdapterD.BasicAdapter23.下列方法中,()执行时释放了锁。A.wait()B.sleep()C.notify()D.clone24.AsyncTask中的()方法在子线程中执行。A.onProgressUpdate()B.onPreExecute()C.doInBackground()D.onPostExecute()25.Android平台的C/C++类库主要集中在()。A.Application层B.Framwork层C.Library层D.LinuxKernel层26.Glide可以设置缓存模式。(×)27.在Service中可以直接进行耗时操作。(×)28.Service可以使用ServiceConnection实现与Activity的交互。(×)29.较长时间的定时任务可以使用Alarm来实现。(×)30.Android中使用openFileOutput(Stringname,intmode)方法获取到文件输出流时,第二个参数mode常用模式有4种。(√)31.Android中创建内容提供者要继承ContentObserver。(×)32.ContentProvider在实际的开发中不需要注册,可以直接使用。(×)33.Android中数据只能存储到sd卡上。(×)34.Android对.png格式的位图支持最好。(√)35.Android提供的用于媒体播放的类,可播放音频和视频,但是仅仅限于MP3和MP4等有限的格式。(√)36.Bitmap包含的图片可以来自文件,也可以由程序创建。(√)37.Bitmap可以理解为一种为存储图形像素而设计的数据结构。(√)38.Canvas是一个操作绘图的平台。(√)39.File适用于存储文本类型数据或者二进制数据。(√)40.onStartCommand()方法在Service的一个完整生命周期内可能会被调用多次。(√)41.onStartCommand()方法在每次启动Service时都会被调用。(√)42.Paint主要的绘图工具类。(√)43.PULL解析也是一种基于事件流驱动的XML解析方式。(√)44.FileProvider类是一个特殊的ContentProvider。(√)45.SharedPreferences所有的信息都是按照key-value的形式保存的。(√)46.在/data/data/包名/cache目录下可以cache软件的缓存数据,当清除缓存时数据就会删除。(√)47.通过JNI可以访问Java的静态变量。(×)48.NDK是使用C/C++语言开发的。(×)49.在Android6.0之后,读写文件权限属于危险权限,需要运行动态申请。(√)50.在Android中,如果要实现配置信息的保存,需要使用SharedPreferences存储技术。(√)形考任务4【简答题】Android系统提供了两种方式来识别一个NFCTag是否为Activity需要处理的内容,对这两种进行讨论。答:1.NFC是什么近距离无线通信技术(NearFieldCommunication,NFC),是由飞利浦公司和索尼公司共同开发的一种非接触式识别和互联技术,可以在移动设备、消费类电子产品、PC和智能设备间进行近距离无线通信。NFC提供了一种简单的、非触控式的解决方案,可以让消费者简单直观地交换信息、访问内容与服务。NFC整合了非接触式读卡器、非接触式智能卡和点对点(Peer-to—Peer)通信功能,为消费者开创了全新的便捷生活方式。手机和NFC技术的结合,将会给消费者提供极大的生活便利,例如移动支付、位置服务信息、身份识别、公共交通卡等应用,在医疗保健、优惠券、智能海报等许多领域有也有巨大的应用潜力。2.NFC的三种工作方式(1)读卡器模式数据在NFC芯片中,可以简单理解成“刷标签”。本质上就是通过支持NFC的手机或其它电子设备从带有NFC芯片的标签、贴纸、名片等媒介中读写信息。通常NFC标签是不需要外部供电的。当支持NFC的外设向NFC读写数据时,它会发送某种磁场,而这个磁场会自动的向NFC标签供电。(2)仿真卡模式数据在支持NFC的手机或其它电子设备中,可以简单理解成“刷手机”。本质上就是将支持NFC的手机或其它电子设备当成借记卡、公交卡、门禁卡等IC卡使用。基本原理是将相应IC卡中的信息凭证封装成数据包存储在支持NFC的外设中。在使用时还需要一个NFC射频器(相当于刷卡器)。将手机靠近NFC射频器,手机就会接收到NFC射频器发过来的信号,在通过一系列复杂的验证后,将IC卡的相应信息传入NFC射频器,最后这些IC卡数据会传入NFC射频器连接的电脑,并进行相应的处理(如电子转帐、开门等操作)。(3)点对点模式该模式与蓝牙、红外差不多,用于不同NFC设备之间进行数据交换,不过这个模式已经没有有“刷”的感觉了。其有效距离一般不能超过4厘米,但传输建立速度要比红外和蓝牙技术快很多,传输速度比红外块得多,如过双方都使用Android4.2,NFC会直接利用蓝牙传输。这种技术被称为AndroidBeam。所以使用AndroidBeam传输数据的两部设备不再限于4厘米之内。点对点模式的典型应用是两部支持NFC的手机或平板电脑实现数据的点对点传输,例如,交换图片或同步设备联系人。因此,通过NFC,多个设备如数字相机,计算机,手机之间,都可以快速连接,并交换资料或者服务。3.NDEF是什么?不同的NFC标签之间差异很大,有的只支持简单的读写操作,有时还会采用支持一次性写入的芯片,将NFC标签设计成只读的。当然,也存在一些复杂的NFC标签,例如,有一些NFC标签可以通过硬件加密的方式限制对某一区域的访问。还有一些标签自带操作环境,允许NFC设备与这些标签进行更复杂的交互。这些标签中的数据也会采用不同的格式。但AndroidSDKAPI主要支持NFC论坛标准(ForumStandard),这种标准被称为NDEF(NFCDataExchangeFormat,NFC数据交换格式)。4.Tag发布系统当android设备扫描到一个NFCtag,通用的行为是自动找最合适的Activity会处理这个tagIntent而不需要用户来选择哪个Activity来处理。因为设备扫描NFCtags是在很短的范围和时间,如果让用户选择的话,那就有可能需要移动设备,这样将会打断这个扫描过程。你应该开发你只处理需要处理的tags的Activity,以防止让用户选择使用哪个Activity来处理的情况。Android提供两个系统来帮助你正确的识别一个NFCtag是否是你的Activity想要处理的:Intent发布系统和前台Activity发布系统。形考任务51.使用JNI调用Java类中方法getTest()。答:首先在java中定义一个静态方法供JNI调用.static{System.loadLibrary("jni-test");@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activitymain);get();//定义一个静态方法,提供给JNI调用publicstaticvoidmethodCalledByJni(StringmsgFromJni){Log.i(TAG,"methodCalledByJni,msg:"+msgFromJni);//定义调用本地方法,好让本地方法回调java中的方法publicnativevoidget();101112131415161718然后在JNI中调用上面定义的静态方法:I/定义调用java中的方法的函数voidcallavaMethod(JNIEnv*env,jobjectthiz){//先找到要调用的类jclassclazz=env->FindClass("com/gavinandre/jnitestapp/MainActivity");if(clazz==NULL){printf("findclassMainActivityerror!");return;//获取java方法id//参数二是调用的方法名,参数三是方法的签名jmethodIDid=env->GetStaticMethodID(clazz,"methodCalledByJni","(Ljava/lang/String;)V");if(id==NULL){printf("findmethodmethodCalledByJnierror!");return;jstringmsg=env->NewStringUTF("msgsendbycallJavaMethodintest.cpp.");//开始调用java中的静态方法env->CallStaticVoidMethod(clazz,id,msg);1819从calllavaMethod的实现可以看出,程序首先根据类名com/gavinandre/jnitestapp/MainActivity找到类,然后再根据方法名methodCalledByJni找到方法,其中(Ljava/lang/String;)V是methodCalledByJni2.【简答题】简述Service原理答:一.在新进程启动Service第一步:APP向AMS发送一个启动Service的消息通过AMN/AMP把要启动的Service信息发送给AMS第二步:AMS创建新的进程这一步,AMS会检查Service是否在AndroidManifest中申明。AMS检查启动Service的进程是否存在,若不存在,先把Service信息保存下来,然后创建一个新进程。在AMS中,每个Service,都使用ServiceRecord对象来保存第三步:新进程启动,通知AMS这一步会创建新的ActivityThread第四步:AMS把传进来的ActivityThread对象改造为ATP,通过ATP把要启动的Service信息发送给新进程第五步:新进程启动Service其中第1/3/4步都是跨进程通信,如果是启动统一进程中的Service,则省略掉启动新进程那两步二.绑定Service绑定就是把AMS发送的启动消息换为绑定消息,app会收到AMS的两个消息,启动Service和绑定Service,并把一个Binder对象传给AMS最后,AMS会把Binder对象发送给App,这里用的是AIDL,AIDL的名字是IServiceConnection形考任务6【简答题】常用的网络权限包括什么

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论