手记

android初级总结

Android初级

1、 谈谈Android系统架构?

答:分为四层:

1)应用程序层 2)应用程序框架层 3)系统运行库层 4)Linux内核层

2、 列举几个你常用的ADB命令?

答: 常用的命令有:adb shell,adb pull,adb push,adb devices,adb install

3、 列举Activity的生命周期的7个方法?

答:Activity生命周期 :是指Android中Activity的启动到停止的全过程。

Android的生命周期由Android系统进行调度和控制。

Activity完整生命周期有7个方法,分别是onCreate() , ,onStart(),onResume(),onPause(),onStop(),onRestart(),onDestroy().

4、 Activity生命周期的四种状态?

答:

1、Running(运行态)

位于屏幕最前端时,此时处于可见状态,和用户可交互的状态。

2、Paused(暂停态)

当Acitivy被另一个透明的或者非全屏的Activity覆盖时的状态叫Paused状态,虽然可见但不可交互。(失去焦点状态) 

3、Stop(停止态)

当Activity被另外一个Activity覆盖、界面不可见时处于Stop状态。

4、Killed(待用态) 

Activity被系统杀死或者跟本没启动时就是Killed状态。

5、 简要叙述Android中的主要五种常用布局及其特点?

答:最常用的布局有以下这几种:

第一种:帧布局(框架布局)FrameLayout,在这个布局中,所有的子元素统统放于这块区域的左上角,并且后面的子元素直接覆盖在前面的子元素之上,将前面的子元素部分和全部遮挡。

第二种:线性布局LinearLayout,最常用的一种布局方式,所有子控件的对齐方式,取决于如何定义 orientation的属性:vertical   垂直方向 ,如果按照这种方向所有的子控件将按照垂直的方式分布在布局上,每行只允许有一个子元素,horizontal水平方向 ,这时子控件将会以水平的方向分布在布局中。

第三种:绝对布局AbsoluteLayout,又可以叫做坐标布局,可以直接指定子元素的绝对位置,这种布局简单直接,直观性强,但是由于手机屏幕尺寸差别比较大,使用绝对定位的适应性会比较差。

第四种:相对布局RelativeLayout,允许子元素指定它们相对于其父元素或兄弟元素的位置,这是实际布局中最常用的布局方式之一。它灵活性大很多,当然属性也多,操作难度也大,属性之间产生冲突的的可能性也大,使用相对布局时要多做些测试。

第五种:表格布局TableLayout,表格布局TableLayout以行列的形式管理子元素,每一行是一个TableRow布局对象,当然也可以是普通的View对象,TableRow里每放一个元素就是一列,总列数由列数最多的那一行决定。

6、 简述ImageView,ImageButton以及Button的区别?

答:ImageView和ImageButton都是继承于View类,Button是继承于TextView类。所以

ImageButton 不支持setText(),而Button支持

ImageButton 支持setImageURI,而Button不支持

ImageButton和Button 都有Button的状态而ImageView没有。

7、 Android中常用的菜单的分类?以及他们的特点?

答:Android中菜单主要分为三类:选项菜单(Option Menu),上下文菜单(Context Menu),子菜单(Sub Menu).

选项菜单是点击Menu按钮弹出来的菜单,最多显示6个。

上下文菜单是在某些组件上添加,长按动作发生后弹出上下文菜单。

子菜单可以创建在选项菜单和上下文菜单上。子菜单里不可以再有子菜单。

8、 谈谈对Intent的理解?

答:实现页面(Activity)跳转,作为四大组件中起“枢纽”作用的对象

Intent中文意思“意图”,在四大组件中,服务和广播接收是通过Intents(消息,意图)来激活的。

Intent分为两种:显式Intent和隐式Intent区别

9、 显式Intent和隐式Intent区别?

答:Intent是一种在不同组件之间传递的请求消息,是应用程序发 出的请求和意图。

对于明确指出了目标组件名称的Intent,我们称之为显式Intent。

对于没有明确指出目标组件名称的Intent,则称之为隐式Intent。

Android系统使用IntentFilter 来寻找与隐式Intent相关的对象。

显式Intent直接用组件的名称定义目标组件,这种方式很直接。但是由于开发人员往往并不清楚别的应用程序的组件名称,因此,显式Intent更多用于在应用程序内部传递消息。比如在某应用程序内,一个Activity启动一个Service。

隐式Intent恰恰相反,它不会用组件名称定义需要激活的目标组件,它更广泛地用于在不同应用程序之间传递消息

10、 谈谈Service的生命周期?

答:Service的生命周期由使用Service两种方式决定,启动方式不同生命周期不同。

Start方式启动Service的生命周期:

onCreate()—onStartCommond()—onDestroy()

调用者和服务之间没有任何的联系,即使调用者退出,那么服务也仍然进行。

Bind方式启动Service的生命周期:onCreate()->onBind()->-->onUnbind() -> onDestroy()

调用者和服务绑定在一起,调用者退出,服务即便退出。

11、 谈谈对Service的理解?

答:服务是一个应用程序组件,可以在后台执行长时间运行的操作,不提供用户界面。

一项服务“开始”,当一个应用程序组件(如一个活动)开始通过调用的StartService() 

“绑定”一个服务,当一个应用程序组件绑定它通过调用bindService() 

12、 启动服务有几种方式?他们之间的区别是什么?

答:启动服务有两种方式。

一种是通过context.startService() 来启动Service

其生命周期为context.startService  () ->onCreate()- >onStart()->Service running-->context.stopService()->onDestroy() ->Service stop

调用者和服务之间没有任何的联系,即使调用者退出,那么服务也仍然进行。

另外一种是通过使用bindService()启动Service

其生命周期为:context.bindService()->onCreate()->onBind()->Service running-->onUnbind() -> onDestroy() ->Service stop

调用者和服务绑定在一起,调用者退出,服务即便退出。

13、 AIDL全称是什么?谈谈AIDL适用的场景?

答:AIDL全称:Android Interface Define Language安卓接口定义语言。

主要适用于跨应用的服务的访问和调用。

14、 建立AIDL服务的步骤

建立AIDL服务要比建立普通的服务复杂一些,具体步骤如下:

(1)在Eclipse Android工程的Java包目录中建立一个扩展名为aidl的文件。该文件的语法类似于Java代码,但会稍有不同。

(2)如果aidl文件的内容是正确的,ADT会自动生成一个Java接口文件(*.java)。

(3)建立一个服务类(Service的子类)。

(4)实现由aidl文件生成的Java接口。

(5)在AndroidManifest.xml文件中配置AIDL服务,尤其要注意的是,<action>标签中android:name的属性值就是客户端要引用该服务的ID,也就是Intent类的参数值。

 

15、 广播接收器的全称?广播接收器的作用?

答:广播的全称是:BroadcastReceiver 广播接收器。

BroadcastReceiver的作用:处理Android中发出的广播事件。

16、 有关广播的注册方式、优缺点,以及引用广播机制的用意。

答:注册广播共有两种方式,一种是通过在manifest.xml文件中注册,不需要手动进行注销。先在XML文件中添加广播注册,然后再在JAVA篇码段中添加Intent intent = new Intent("test");   

sendBroadcast(intent);

另一种直接在代码中通过代码注册(有点类似如隐式Intent);需要通过手动进行注销(unregisterReceiver(receiver);

第一种方式: 不需要启动程序也可以监听广播但有时显得不灵活;

第二种方式:需要启动程序代码才可以监听,有时比较灵活,如当希望在某个Activity启动时监听广播,当这Activity死亡时不监听,即可用这种方法。

BroadcastReceiver的用意:处理Android中发出的广播事件。

17、 Android四大组件的作用?android用四大组件的用意何在?(ContentProvider可以不用描述)

答:Android中四大核心组件分别是:Activity,Service,BroadCastReceiver,ContentProvider。 

Activity 是UI界面显示,它是Android程序与用户交互的窗口,是Android构造块中最基本的一种,它需要为保持各界面的状态,做很多持久化的事情,妥善管理生命周期以及一些跳转逻辑。 

Service(后台运行的服务)一种长生命周期的、可以理解为没有界面的activity,

后台服务于Activity,封装有一个完整的功能逻辑实现,接受上层指令,完成相关的事务,定义好需要接受的Intent提供同步和异步的接口。 

BroadcastReceiver 广播接收器(做广播,通知时候用到)是为了处理Android中发出的广播事件的组件;

(接受一种或者多种Intent作触发事件,接受相关消息,做一些简单处理,转换成一条Notification,统一了Android的事件广播模型。)

Content Provider 数据通信(组件之间通信)实现不同组件之间数据的共享

(是Android提供的第三方应用数据的访问方案,可以派生Content Provider类,对外提供数据,可以像数据库一样进行选择排序,屏蔽内部数据的存储细节,向外提供统一的接口模型,大大简化上层应用,对数据的整合提供了更方便的途径。 )

19、谈谈Activity与Service的区别

 a. Activity

Activity是用户和应用程序交互的窗口,一个Activity是一个应用程序组 

件,提供一个屏幕,用户可以用来交互为了完成某项任务例如拨号、拍照、

发送email、看地图。每一个activity被给予一个窗口,在上面可以绘制用

户接口。窗口通常充满屏幕,但也可以小于屏幕而浮于其它窗口之上。一个

activity相当于我们实际中的一个网页,当打开一个屏幕时,之前的那一个

屏幕会被置为暂停状态,并且压入历史堆栈中,用户可以通过回退操作返回

到以前打开过的屏幕。activity的生命周期:即“产生、运行、

销毁”,但是这其中会调用许多方法onCreate(创建) 、onStart(激活) 、

onResume(恢复) 、onPause(暂停) 、onStop(停止) 、onDestroy(销毁) 、

onRestart(重启)。

 b.Service

Service是运行在后台的一段代码,它可以运行很长的时间,相当于后台的一个服务。它可以运行在它自己的进程,也可以运行在其他应用程序进程的上下文(context)里面,这取决于自身的需要。其它的组件可以绑定到一个服务(Service)上面,通过远程过程调用(RPC)来调用这个方法。例如媒体播放器的服务,当用户退出媒体选择用户界面,仍然希望音乐依然可以继续播放,这时就是由服务 (service)来保证当用户界面关闭时音乐继续播放的。 

20、 Intent 能传递什么数据类型?

     a.简单或者基本数据类型

     b.传递一个Bundle

     c.传递Serializable对象

     d.Parcelable对象

     e.Intent

21、当一个Activity在虚拟器上运行起来以后,点击home键,Activity会执行什么生命

还走起方法? 当再次进入这个应用,Activity执行什么生命周期方法?

点击home键,会执行onPouse()----onStop()   当再次打开应用,会执行

onRestart()---onStart()----onResume()

22、SharedPreferences能存储什么数据类型?

Shared Preferences:用来存储"key-value"paires格式的数据,它是一个

轻量级的键值存储机制,只可以存储基本的数据类型。如 String 、int 、

boolean 、float 、double、long 、byte、short   

23、一个Intent对象包括六个属性,请一一列举这六个属性。

答案:组件名(Component Name)、动作(Action)、数据(Data)、分类(Category)、额外信息(Extra)和标志(Flags)。

24、请写出ListView的特点。

答案:①采用MVC模式将前端显示和后端数据分离。②该控件不能使用ListView.add或类似方法添加数据,需要指定一个Adapter对象,通过Adapter对象获得需要显示的数据,这个Adapter需要实现ListAdapter接口。③为ListView提供数据的List或数组相当于MVC模式中的M(数据模型Model)。④ListView相当于MVC模式中的V(视图View)。⑤Adapter对象相当于MVC模式中的C(控制器Control)。

25、请写出ArrayAdapter、SimpleAdapter、SimpleCursorAdapter和自定义的Adapter各自的特点。

答案:①ArrayAdapter:最简单的Adapter,适合于列表项中只含有文本信息的情况,是填充文本列表最简便的一种方式。②SimpleAdapter:比ArrayAdapter复杂,适合于每一个列表项中含有不同的子控件,比如一个图片、一串文本和一个按钮的组合。③SimpleCursorAdapter:专门用来把一个Cursor(游标)中的数据映射到列表中,Cursor中的每一条数据映射为列表中的一项。Cursor常用在数据库查询中,会把查询到的若干条记录放在一个Cursor中。④自定义Adapter:完全自行定义数据的适配方式,灵活性最强,但使用起来比前三个复杂。适合于当前三个Adapter不能满足需求的情况下。

26、请简单介绍一下ListView的缓存机制。

答案:①如果有几千、几万甚至更多的项时,其中只有可见的项存在于内存中,其它的都在Recycler中,Recycler是Android中专门用来处理缓存的组件。②ListView先通过getView()方法请求一个View,然后请求其它可见的View。convertView在getView中是空的(null)。③当列表第一项滚出屏幕,并且一个新的项从屏幕低端上来时,ListView会再请求一个View,这时,convertView已经不是空值了,它的值是滚出屏幕的第一项,之后只需设定新的数据,然后返回convertView即可,而不必重新创建一个View。

27、请写出Android中的不少于四个Adapter控件。

答案:ListView、Gallery、Spinners、自定义Adapter控件和GridView等。

28、请写出Android中的不少于四种Adapter对象。

答案:ArrayAdapter、SimpleAdapter、自定义Adapter和SimpleCursorAdapter

29、请详细请描述一下在Activity的生命周期中各个方法的调用顺序。 

答案:① 初次启动一个Activity时的执行过程是:依次执行了onCreate() 、onStart() 和onResume()方法。② 当Activity启动后,点击“返回”按钮,这时Activity的执行顺序是:onPause() -> onStop() -> onDestroy()。③ 启动一个Activity时的执行过程是:依次执行了onCreate() 、onStart() 和onResume()方法。④ 在Activity被启动之后,点击Home按钮,这时Activity的执行顺序是:onPause() -> onStop()。⑤ 点击Home按钮后,系统回到桌面,然后我们再找到这个应用并打开,这时Activity的执行顺序是:onRestart() -> onStart() -> onResume()。⑥ 重新启动一个应用,在它被启动后,先点击“拨打电话”按钮,之后再点击“返回”按钮,这时Activity的执行顺序是:onPause() -> onStop() -> onRestart() -> onStart() -> onResume()。

30、请描述Android中的几种数据存储方式。

答案:

SharedPreferences

File (IS.ES)

SQLite数据库

网络存储

Content Provider

原文链接:http://www.apkbus.com/blog-677884-59323.html

0人推荐
随时随地看视频
慕课网APP