以“一问一答”的形式总结记录自己在android学习过程中的重要知识点,让知识更清晰,便于记忆与理解,也有助于以后各种android相关的笔试、面试。
主要是参考了李刚老师的《Android疯狂讲义》总结的android基础知识。
系统体系结构
由五部分组成:1.应用程序层 2.应用程序框架 3.函数库 4.Android运行时 5.Linux内核
一张图说明问题。
四大组件
(1)Activity:为Android应用提供可视化的用户界面
(2)Service:为其他组件提供后台服务或监控其它组件的运行状态,通常后台运行,没有图形用户界面
(3)BroadcastReceiver:全局监听器,用于监听系统广播消息
(4)ContentProvider:跨应用的数据交换,与ContentResolver结合使用UI组件总结
一直苦于android“丰富”的UI组件,特此总结一番。(不妨测试一下自己,你都认识吗?)
① 布局管理器
LinearLayout(线性布局)、TableLayout(表格布局)、FrameLayout(帧布局)、RelativeLayout(相对布局)、GridLayout(网格布局)、AbsoluteLayout(绝对布局)
② TextView及其子类
TextView(文本框)、EditText(编辑框)、Button(按钮)、CheckedTextView(检查的文本框)、RadioButton(单选按钮)、CheckBox(复选框)、ToggleButton(状态开关按钮)、Switch(开关)、AnalogClock(模拟时钟)、DigitalClock(数字时钟)、Chronometer(计时器)、AutoCompleteTextView(自动完成文本框)、MultiAutoCompleteTextView(允许输入多个提示项)、ExtractEditText(提供全屏输入法支持)
③ ImageView及其子类
ImageView(图片框)、ImageButton(图片按钮)、ZoomButton(“放大”或“缩小”按钮,ZoomControls提供“放大”“缩小”组合按钮)、QuickContactBadge(显示关联到指定联系人的图片)
④ AdapterView及其子类
AdapterView、AbsListView、AbsSpinner、AdapterViewAnimator(均为抽象类)、ListView(列表视图、一列)、GridView(网格视图、多列)、ExpandableListView(可展开的列表组件)、Spinner(下拉列表选择框、垂直)、Gallery(画廊视图、水平的列表选择框)、AdapterViewFlipper(带有自动播放、渐影渐显效果)、StackView(堆叠的图片)
⑤ ProgressBar及其子类
ProgressBar(进度条)、SeekBar(拖动条)、RatingBar(星级评分条)
⑥ ViewAnimator及其子类
ViewAnimator(增加动画效果)、ViewSwitcher(视图切换)、ImageSwitcher(图像切换器)、TextSwitcher(文本切换器)、ViewFlipper(类似于AdapterViewFlipper)
⑦ 杂项
Toast(提示信息)、CalendarView(日历视图)、DatePicker(日期选择器)、TimePicker(时间选择器)、NumberPicker(数值选择器)、SearchView(搜索框)、TabHost(选项条)、ScrollView(滚动视图)、HorizontolScrollView(水平滚动条)、Notification(状态通知)
⑧ 对话框
AlertDialog(对话框)、ProgressDialog(进度对话框)、DatePickerDialog(日期选择对话框)、TimePickerDialog(时间选择对话框)、PopupWindow(对话框风格的窗口)
图片是eclipse下View类的继承关系(快捷键Ctrl+T,android版本为4.4.2)的截图。
常用四种适配器
(1)BaseAdapter
(2)ArrayAdapter
(3)SimpleAdapter
(4)SimpleCursorAdapterHandler的使用步骤
1
2
3
4
5
6
7
8
9Loop.prepare();//为当前线程创建Looper对象,同时也创建了与之配套的MessengerQueue。
handler = new Handler() {
@override
public void handleMessage(Message msg) {
//负责处理来自于其他线程的消息
}
};
Looper.loop();//启动Looper
//注:主UI线程可以直接创建Handler对象,系统已初始化了一个Looper对象。Activity的7个生命周期
(1)onCreate()
(2)onStart()
(3)onResume()
(4)onRestart()
(5)onPause()
(6)onStop()
(7)onDestroy()
具体例子:
①第一次创建Activity:onCreate()、onStart()、onResume()
②按home键:onPause()、onStop()
③再回到应用:onRestart()、onStart()、onResume()
④跳转新Activity然后回到原Activity、屏幕锁屏再解锁:与按home键然后回到应用一样
⑤旋转屏幕:onPause()、onStop()、onDestroy()、onCreate()、onStart()、onResume()
⑥返回键退出应用:onPause()、onStop()、onDestroy()
此处引用一张官网的Activity生命周期图:
Fragment的11个生命周期
引用两张官网的图。
Fragment生命周期:
Fragment与Activity的生命周期关系:
HttpClient的用法
HttpClient就是一个增强版的HttpURLConnection
(1)创建HttpClient对象。
(2)创建请求方法的实例,并指定请求URL。如果需要发送GET请求,创建HttpGet对象;如果需要发送POST请求,创建HttpPost对象。
(3)如果需要发送请求参数,可调用HttpGet、HttpPost共同的setParams(HetpParams params)方法来添加请求参数;对于HttpPost对象而言,也可调用setEntity(HttpEntity entity)方法来设置请求参数。
(4)调用HttpClient对象的execute(HttpUriRequest request)发送请求,该方法返回一个HttpResponse。
(5)调用HttpResponse的getAllHeaders()、getHeaders(String name)等方法可获取服务器的响应头;调用HttpResponse的getEntity()方法可获取HttpEntity对象,该对象包装了服务器的响应内容。程序可通过该对象获取服务器的响应内容。1
2
3
4
5
6
7
8
9
10//简单用法:从一个网络URL获取字符串数据
String url = "http://zyfree.acman.cn/";
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(url);
try {
HttpResponse response = client.execute(get);
HttpEntity entity = response.getEntity();
String result = EntityUtils.toString(entity);
} catch (Exception e) {
}
注:图片来自于Dribbble。
————————原创文章,未经许可,请勿转载!!!————————