Android 基础知识总结

以“一问一答”的形式总结记录自己在android学习过程中的重要知识点,让知识更清晰,便于记忆与理解,也有助于以后各种android相关的笔试、面试。

Android

主要是参考了李刚老师的《Android疯狂讲义》总结的android基础知识。

  1. 系统体系结构
    由五部分组成:1.应用程序层 2.应用程序框架 3.函数库 4.Android运行时 5.Linux内核
    一张图说明问题。

  2. 四大组件
    (1)Activity:为Android应用提供可视化的用户界面
    (2)Service:为其他组件提供后台服务或监控其它组件的运行状态,通常后台运行,没有图形用户界面
    (3)BroadcastReceiver:全局监听器,用于监听系统广播消息
    (4)ContentProvider:跨应用的数据交换,与ContentResolver结合使用

  3. 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)的截图。

  4. 常用四种适配器
    (1)BaseAdapter
    (2)ArrayAdapter
    (3)SimpleAdapter
    (4)SimpleCursorAdapter

  5. Handler的使用步骤

    1
    2
    3
    4
    5
    6
    7
    8
    9
    Loop.prepare();//为当前线程创建Looper对象,同时也创建了与之配套的MessengerQueue。  
    handler = new Handler() {
    @override
    public void handleMessage(Message msg) {
    //负责处理来自于其他线程的消息
    }
    };
    Looper.loop();//启动Looper
    //注:主UI线程可以直接创建Handler对象,系统已初始化了一个Looper对象。
  6. 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生命周期图:

  7. Fragment的11个生命周期
    引用两张官网的图。
    Fragment生命周期:

    Fragment与Activity的生命周期关系:

  8. 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

————————原创文章,未经许可,请勿转载!!!————————