您的位置:首页 > 移动开发 > Android开发

Android基础复习

2016-06-21 17:24 316 查看
一、Android应用程序四大组件分别是什么?各个组件所起到的作用是什么?
         1、四大组件:Acyivity
、Broadcast 、Service 、ContentProvider

           【intent:四大组件进行交流的通道,信使。】
           2、(1)什么是activity?
                      Activity是最基本的Android应用程序组件,应用程序中,一个Activity通常就是一个单独的屏幕。每个Activity都被实现为一个独立的类,并且从Activity基类继承而来,Activity类会显示视图控制组件,并对事件做出响应,大多数应用程序都是有多个Activity组成的。
           (2)什么是广播?
                      Broadcast是Android系统中常用的一种机制,让应用对一个外部的事件作出响应。
           (3)什么事Service?
                      一个服务是具有较长生命周期且没有用户界面的程序。
           (4)什么事ContentProvider?
                      应用程序能够将它们的数据保存到文件、SQLite数据库中,甚至是任何有效的设备中。当需要将应用数据与其他的应用共享的时候,内容提供者类实现了一组标准的方法,从而能够让其他的应用保存或读取此内容提供器处理的各种数据类型。
二、Android应用的目录组织结构,每个文件夹及文件的用途?
           (1)src:用于存放整个项目源代码
           (2)gen:由Android自动生成和维护,包含一个非常重要的.java文件:R.java,它是程序与资源文件建立联系的桥梁,不可改动和删除
           (3)assets:存放资源,但这里的资源不会在R.java文件下生成相应的标记,访问的时候需要通过AssetManager类
           (4)bin:在项目运行以后生成,里面包含生成的可执行文件,如可直接在手机上运行的APK文件
           (5)res:存放资源,这里的资源会被映射到R.java文件中,访问时直接使用资源ID。注意:res目录下的文件名应为小写
           (6)drawable:是res的子目录,用于存放应用程序使用的图像资源或者图像描述文件。
           (7)layout:是res的子目录,放置Android应用程序的布局xml文件
           (8)values:是res的子目录,放置应用程序常量资源
           (9)menu:是res的子目录,用于放置菜单的布局文件
三、Android中如何进行事件处理?事件源是什么?事件处理类是什么?注册事件监听又是怎么回事?
           1、事件处理:基于回调的事件处理和基于监听器的事件处理。
          (1)对于基于监听器的事件处理而言,主要就是为Android界面组件绑定特定的事件监听器;(2)对于基于回调的事件处理而言,主要做法是重写Android组件特定的回调函数,Android大部分界面组件都提供了事件响应的回调函数,我们主要重写它们就行。
          2、事件源:产生事件的来源,通常是各种组件,如按钮,窗口等。              
              3、事件监听:负责监听事件源发生的事件,并对不同的事件做相应的处理。         
四、Activity的生命周期是怎样的?


五、Logcat是干吗用的?
         Logcat:日志猫,打印输出信息。
六、如何实现界面的跳转?
         Intent intent = new Intent();<br>
          intent.setClass(this,
***.activity);
          <br>startActivity(intent);
七、跳转时如何携带数据?
         需要在源activity中使用intent.putExtra()方法传出数据、在对应activity中使用intent.get**Extra()方法接收数据。
八、LinearLayout的特点是什么?
               LinearLayout是线性布局控件,它包含的子控件将以横向或竖向的方式排列,按照相对位置来排列所有的widgets或者其他的containers,超过边界时,某些控件将缺失或消失。
九、RelativeLayout的特点是什么?
       RelativeLayout是相对布局控件,是一个允许子视图相对于其他兄弟视图或是父视图显示的视图组。每个视图的位置能够指定它相对于兄弟或是父视图(这里是指相对布局容器)的位置。
十、ViewGroup和View有关系吗?
         Android中的所有UI类都是建立在View和ViewGroup这两个类的基础上的。所有View的子类称为”Widget”,所有ViewGroup的子类称为”Layout”。View和ViewGroup之间采用了组合设计模式,可以使得“部分-整体”同等对待。ViewGroup作为布局容器类的最上层,布局容器里面又可以有View和ViewGroup。
【ViewGroup是View的子类,所以它也具有View的特性,但它主要用来充当View的容器,将其中的View视作自己的孩子,对它的子View进行管理,当然它的孩子也可以是ViewGroup类型。
ViewGroup(树根)和它的孩子们(View和ViewGroup)以树形结构形成了一个层次结构,View类有接受和处理消息的功能,android系统所产生的消息会在这些ViewGroup和View之间传递。】
十一、何时使用include包含公共的界面,何时选择自定义控件?
          在一个项目中我们可能会需要用到相同的布局设计,如果都写在一个xml文件中,代码显得很冗余,并且可读性也很差,所以我们可以把相同布局的代码单独写成一个模块,然后用到的时候可以通过<include/>
标签来重用layout代码。
十二、ListView控件使用?
           ListView控件是一个列表控件,它继承自AdapterView类,ListView的布局是由一条一条的Item组成的,这每一个Item又是一个View。ListView控件的特点是每一个列表项(item)独占一行,每一行的布局都是相同的,其中显示的内容和行布局分离。
十三、Adapter起到的作用是什么?
         adapter使数据绑定到控件变得更加简单和灵活。
十四、SharedPreferences存储方式的特点是什么?最终生成的文件是什么格式?
         SharedPreferences存储方式,它是Android提供的用来存储一些简单配置信息的一种机制,例如:登录用户的用户名与密码。其采用了Map数据结构来存储数据,以键值的方式存储,可以简单的读取与写入。 除SQLite数据库外,另一种常用的数据存储方式,其本质就是一个xml文件,常用于存储较简单的参数设置。用来存储
“键-值”格式的数据。
十五、数据库存储用的是什么?Cursor是什么?如果不会SQL语句怎么办?
         1、SQLite是一个轻量级的数据库,支持基本SQL语法,是常被采用的一种数据库存储方式。Android为此数据库提供了一个名为SQLiteDatabase的类,封装了一些操作数据库的API。
         2、Cursor是每行的集合(1)使用moveToFirst()定位第一行。(2)你必须知道每一列的名称。(3)你必须知道每一列的数据类型。(4)Cursor
是一个随机的数据源。(5)所有的数据都是通过下标取得。
          3、还可以用这三种存储方式SharePreference、File、ContentProvider
十六、从网络中获取数据的思路是怎样的?
         首先需要获取到HttpURLConnection的实例,一般只需new出一个URL对象,并传入目标的网络地址,然后调用一下openConnection()方法即可。得到了HttpURLConnection的实例之后,我们可以设置一下HTTP请求所使用的方法。常用的方法主要有两个,GET和POST。GET表示希望从服务器那里获取数据,而POST则表示希望提交数据给服务器。接下来就可以进行一些自由的定制了,比如设置连接超时、读取超时的毫秒数,以及服务器希望得到的一些消息头等。之后再调用getInputStream()方法就可以获取到服务器返回的输入流了,剩下的任务就是对输入流进行读。之后再调用getInputStream()方法就可以获取到服务器返回的输入流了,剩下的任务就是对输入流进行读取。最后可以调用disconnect()方法将这个HTTP连接关闭掉
十七、XML解析技术有哪些?
         (1)DOM解析器(2)SAX解析器(3)PULL解析器
十八、JSON解析又是什么?
 
JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度。          
十九、XML解析和JSON解析各自的优缺点是什么
          1、两者的数据可读性基本相同,都拥有同样丰富的解析手段
         2、json的数据体积更小,与JS的交互更加方便,解析速度更快
         3、xml对数据的描述性更好
二十、多线程创建的方式有哪些?
         1、通过扩展Thread类来创建多线程
      2、通过实现Runnable接口来创建多线程
      3、通过实现Runnable接口来实现线程间的资源共享
二十一、Handler的作用是什么?
             与其他线程协同工作,接收其他线程的消息并通过接收到的消息更新主UI线程的内容。 也就是说handler保存了两个队列,一个消息队列,一个runnable队列,handler负责顺序一个一个执行两个队列里需要处理的元素
二十二、单元测试的目的是什么?
【注意】测试activity继承InstrumentationTestCase,需要新建一个AndroidTestProject,而测试逻辑继承AndroidTestCase则是在原项目中进行,可以将测试代码统一放到一个yourpackage.test包下。
目的:  Android单元测试,主要目的是为了保证复杂逻辑是否正常正确,以及依据TDD的原则,测试先于编码,理清代码编写的思路。 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: