Android复习重点培训资料.docx
《Android复习重点培训资料.docx》由会员分享,可在线阅读,更多相关《Android复习重点培训资料.docx(10页珍藏版)》请在冰豆网上搜索。
Android复习重点培训资料
Android-复习重点
1、Android四大组件是什么?
(activity,service,contentprovider,broadcastreceiver)
2、Activity生命周期方法有哪些?
不要与service的生命周期方法记混淆
(
onCreate():
当activity是被创建时候,会自动运行该方法。
该方法做一些初始化动作,比如创建views,设置数据到list等等,该方法提供了一个Bundle类型的变量,该变量中有这个activity以前的状态信息,前提是以前存过这些信息。
这个方法执行完后执行的是onStart()方法;若在onCreate方法中加入finish()方法,onCreate下一个运行onDestroy方法
onRestart():
把activity从onStop状态唤醒时,会用onRestart方法,该方法优先于再次运行的onStart,运行完onRestart之后运行onStart。
若在onRestart()方法中加入finish()语句,则还是会继续运行onStart及后面的状态方法直到onDestroy运行完
onStart():
当activity对用户可见时会调用onStart,当activity在前台显示时,会运行onResume;当activity还没在前台显示就被隐藏(停止状态)了会运行onStop(),比如在onStart方法中用了finish()方法的话,onStart()之后就会直接运行onStop->onDestroy。
onResume():
当activity开始与用户交互时,会调用onResume,并且为了用户操作此时该activity位于activity栈的顶部。
经过某些操作后该方法执行完后执行的是onPause()
onPause():
当一个activity运行到onResume方法后,不管是这个activity要销毁还是要暂停或停止,都会调用该方法。
这个方法之后有可能是onResume也有可能是onStop,若是在这个activity-A中打开一个不完全覆盖这个activity-A的新activity-B,那么activity-A就会是onPause状态,当activity-B退出时,activity-A就直接运行onResume(前提是onPause的方法执行完了,否则会等onPause方法执行完后才运行onResume方法,所以不建议在这个方法中执行CPU密集的操作)。
若是需要退出activity-A,那么下一个就会执行onStop。
onPause()用于提交未保存发生变化了的持久化数据,及停止动画及其他其他比较消耗CPU的事件(比如广播接收器,传感器(比如GPS),或者消耗电量的资源),这是为了更好的运行新的activity
onStop():
当这个activity完全看不见的时候,会调用onStop方法,因为另一个activity会调用onResume并且覆盖这个activity。
以下三种情况都会使这个activity调用onStop()方法,第一种是一个新的activity被执行,第二种是一个已经存在的activity被切换到最前端,第三种是这个activity要被销毁。
如果通过用户召回这个activity,那么会调用onRestart方法;若这个activity要被销毁,则调用onDestroy方法
onDestroy():
当activity销毁前会调用该方法,比如发生如下情况:
activity调用了finish()方法来结束这个activity,或者因为系统为了节省空间而临时销毁这个activity,这两个情况可以通过isFinishing()方法判断
总结:
当用户自己退出程序的时候,建议在onStop方法中保存数据;
当用户打开一个新的activity的时候,建议通过onSaveInstanceState来保存数据;这里在网上看到很多人说应该放在onPause里保存,其实我觉得在打开新的一个activity的时候,或者将程序至于后台的时候,都会默认调用onSaveInstanceState方法,而且在这种暂停的状态下,Android的内存管理机制也不太会杀死这种状态的activity。
而用onPause保存的时候,若是下一个执行onResume的方法的话,会影响速度,当然数据量小的话也感觉不出来。
)
3、Back键与home键对Activity的影响有什么不同,哪个会销毁页面?
(back键
Android的程序无需刻意的去退出,当你一按下手机的back键的时候,系统会默认调用程序栈中最上层Activity的Destroy()方法来销毁当前Activity,当此Activity又被其它Activity启动起来的时候,会重新调用OnCreate()方法进行创建,当栈中所有Activity都弹出结束后,应用也就随之结束了.如果说程序中存在service之类的,则可以在恰当的位置监听处理下也就可以了.
home键
Android程序的隐藏,当你按下手机的Home键的时候,系统会默认调用程序栈中最上层Activity的stop()方法,然后整个应用程序都会被隐藏起来,当你再次点击手机桌面上应用程序图标时,系统会调用最上层Activity的OnResume()方法,此时不会重新打开程序,而是直接进入,会直接显示程序栈中最上层的Activity.)
4、Android应用程序的目录结构的用途,assests与res文件夹的区别
(1.assets:
不会在R.java文件下生成相应的标记,存放到这里的资源在运行打包的时候都会打入程序安装包中
2.res:
会在R.java文件下生成标记,这里的资源会在运行打包操作的时候判断哪些被使用到了,没有被使用到的文件资源是不会打包到安装包中的。
在res文件夹下其实还可以定义一下目录:
res/anim:
这里存放的是动画资源。
res/xml:
可以在Activity中使用getResource().getXML()读取这里的资源文件
res/raw:
该目录下的文件可以直接复制到设备上,编译软件时,这里的数据不需要编译,直接加入到程序安装包中,使用方法是getResource().OpenRawResources(ID),其中参数ID的形式是R.raw.XXX.)
5、Android中gen文件夹中最重要的是R.java文件,它是系统自动生成的,不能手动修改。
6、AndroidManifest.xml文件中各类元素,如与,同层次的元素位置,元素属性是否必须设置等。
7、Srcvaluesdrawablelayout文件夹放什么(
1.src:
存放所有的*.java源程序。
2.gen:
为ADT插件自动生成的代码文件保存路径,里面的R.java将保存所有的资源ID。
3.assets:
可以存放项目一些较大的资源文件,例如:
图片、音乐、字体等。
4.res:
可以存放项目中所有的资源文件,例如:
图片(*.png、*.jpg)、文本等。
5.res\drawable-hdpi:
保存高分辨率图片资源,可以使用Resources.getDrawable(id)可以获得资源类型。
6.res\drawable-ldpi:
保存低分辩率图片资源,可以使用Resources.getDrawable(id)可以获得资源类型。
7.res\drawable-mdpi:
保存中等分辨率图片资源,可以使用Resources.getDrawable(id)可以获得资源类型。
8.res\layout:
存放所有的布局文件,主要是用于排列不同的显示组件,在Android程序中要读取此配置。
9.res\values:
存放一些资源文件的信息,用于读取文本资源,在本文件夹之中有一些约定的文件名称:
·arrays.xml:
定义数组数据;
·colors.xml:
定义表示颜色的数据;
·dimens.xml:
定义尺度,可以使用Resources.getDimension()获得这些资源;
·strings.xml:
定义字符串,可以使用Resources.getString()或Resources.getText()方法获得这些资源;
·styles.xml:
定义显示的样式文件;
10.res\raw:
自定义的一些原生文件所在目录,像音乐、视频等文件格式,Resources.getRawResource()方法可以获得这些资源。
11.res\xml:
用户自定义的XML文件,所有的文件在程序运行时编译到应用程序之中,在程序运行时可以使用Resources.getXML()方法获取。
12.res\anim:
用于定义动画对象;
13.bin:
生成apk的文件夹。
)
8、常用xml属性及属性值的意思,如
android:
layout_width指定组件布局宽度
layout_height指定组件布局高度
android:
text指定控件当中显示的文字
android:
hint来设置当EditText内容为空时显示的文本,这个文本只在EditText为空时显示,你输入字符的时候就消失了,
android:
autoText如果设置,将自动执行输入值的拼写纠正
android:
textSize指定控件当中字体的大小
wrap_content表示根据控件中的内容来确定,也就是说,在满足完全显示控件内容的情况下,把宽度和高度设置为最小。
fill_parent表示尽可能地充满父控件的空间,如果当前控件是最上层,就是充满整个屏幕
9、从当前Activity启动另一个Activity,可以使用哪两种方法?
有什么区别?
(
显式Intent:
通过指定Intent组件名称来实现的,它一般用在知道目标组件名称的前提下,一般是在相同的应用程序内部实现的。
隐式Intent:
通过IntentFilter来实现的,它一般用在没有明确指出目标组件名称的前提下,一般是用于在不同应用程序之间。
)
10、Intent的作用:
实现页面跳转,连接四大组件的桥梁
11、ContentProvider的作用:
实现应用程序之间的数据共享
12、退出activity的方法(finishonstop抛出异常强制退出)
13、AlertDialog怎样创建?
(newAlertDialog.builder),怎样显示?
(show),设置“确认”按钮的方法setPositivebutton设置“取消”按钮的方法setNegativeButton
14、Service生命周期的方法:
onCreateonStart,第一次启动时会执行什么,若已经启动了,再次启动Service会执行哪些方法(当第一次启动的时候先后调用onCreate()和onStart()方法,如果service已经启动,只会执行onStart()方法,不在执行onCreate()方法
)
15、Service的两种启动方式分别对应哪两个方法?
停止呢?
(有两种方式启动一个Service,他们对Service生命周期的影响是不一样的。
1通过startServiceService会经历onCreate->onStartstopService的时候直接onDestroy如果是调用者自己直接退出而没有调用stopService的话,Service会一直在后台运行。
下次调用者再起来可以stopService。
2通过bindServiceService只会运行onCreate,这个时候服务的调用者和服务绑定在一起调用者退出了,Srevice就会调用onUnbind->onDestroyed