Activity

Activity 是一个应用组件,用户可与其提供的屏幕进行交互,以执行对手机应用操作。 每个 Activity 都会获得一个用于绘制其用户界面的窗口。窗口一般是会充满屏幕,但也不一定,可浮动在其他窗口之上。

简单来说,一个应用通常由多个彼此松散联系的 Activity 组成。 一般会指定应用中的某个 Activity 为“主”Activity,即首次启动应用时呈现给用户的那个 Activity。 而且每个 Activity 均可启动另一个 Activity,以便执行不同的操作。 每次新 Activity 启动时,前一 Activity 便会停止,但系统会在堆栈(“返回栈”)中保留该 Activity。 当新 Activity 启动时,系统会将其推送到返回栈上,并取得用户焦点。 返回栈遵循基本的“后进先出”堆栈机制,因此,当用户完成当前 Activity 并按“返回”按钮时,系统会从堆栈中将其弹出(并销毁),然后恢复前一 Activity。

关于Activity的相关函数

onCreate():启动创建Activity,系统第一个执行的方法。

onStart():就在(just before)Activity成为可见之前调用

onRestart():Activity从后台重新回到前台时被调用,用户可见但不可交互

onResume():就在(just before)Activity开始与用户交互之前调用。(此时不能完全交互)

onWindowFocusChanged():Activity窗口获得或失去焦点时被调用,在onResume之后或onPause之后

onPause():Activity被覆盖到下面或者锁屏时被调用

onStop():退出当前Activity或者跳转到新Activity时被调用

onDestroy():退出当前Activity时被调用,调用之后Activity就结束了

onSaveInstanceState(Bundle outState):Activity被系统杀死时被调用. 例如:屏幕方向改变时,Activity被销毁再重建;当前Activity处于后台,系统资源紧张将其杀死. 另外,当跳转到其他Activity或者按Home键回到主屏时该方法也会被调用,系统是为了保存当前View组件的状态.
在onPause之前被调用.

onRestoreInstanceState(Bundle savedInstanceState):Activity被系统杀死后再重建时被调用.例如:屏幕方向改变时,Activity被销毁再重建;当前Activity处于后台,系统资源紧张将其杀死,用户又启动该Activity.这两种情况下onRestoreInstanceState都会被调用,在onStart之后。

理解了上面的这些相关的函数之后,再来看这个Activity的周期图,可以更好的理解Activity的执行过程

Adapter

Adapter是连接后端数据和前端显示的适配器接口,是数据和View之间一个重要的纽带。

Android中Adapter有很多类别,比较常用的有 BaseAdapter,SimpleAdapter,ArrayAdapter,SimpleCursorAdapter等。

BaseAdapter:基础适配器,Android BaseAdapter实现了ListAdapter和SpinnerAdapter的接口,GridView的适配器有实现了ListAdapter,所以,BaseAdapter对于Spinner、ListView、GridView是通用的。BaseAdapter是一个抽象类,继承它的类要实现很多方法。

ArrayAdapter:ArrayAdapter是BaseAdapter的之类,从BaseAdapter派生C胡来,它有BaseAdapter的所以功能。但是,ArrayAdapter可以直接使用泛型结构。

ArrayAdapter比较简单,只能显示一行文本。

SimpleAdapter:简单适配器,可以将静态数据映射到XML文件定义好的布局中。利用SimpleAdapter可以显示比较复杂的列表,比如,每行显示一些图片、文本啊等一些复杂/特殊效果,但它只是单纯的显示,若在后期对列表进行修改,则不可以。SimpleAdapter具有最后的扩充性。

SimpleCursorAdapter:SimpleCursorAdapter是一个专门用于将数据库表中数据显示在UI组件中。在Android中一些普通的Adapter对象也可以将数据库中的数据显示阿紫界面上,但用普通的Adapter工作量要大很多。SimpleCursorAdapter使用上非常相似,可把SimpleAdapter理解为对数据库的一种简单结合,然后 分别把数据库中的内容以列表的形式展示出来。

Adapter是所有Adapter子类的父类,它是一个接口,里面定义了很多基本的方法。作为连接AdapterView和数据集的桥梁。它可以获取数据集合中的每一项并于AdapterView相应的视图项一一对应起来,将数据显示。

Adapter的主要方法:

int getCount():

获取与当前Adapter连接的数据集合的项数总和。

Object getItem(int Posistion):

获取与当前Adapter绑定的数据集中指定下标的项。

long getItemId(int position):

获取与当前Adapter绑定的数据集中指定下标的项所在的row id(即在list中的下标)

View getView(int position,View convertView,ViewGroup parent):

这个方法是实现Adapter子类的难点和最重要的地方,往往最容易出现问题的地方也是这里,所以要特别注意。这个方法目的在于获取一个用于展示当前数据集中指定下标的数据项的视图。通常有两种方法来获取View,自己创建一个View或者用XML布局填充来获得一个View。通常情况下,在填充一个View的时候,如果没有在LayoutInflater.inflate方法中指定View的根视图的话,会默认的将当前View附加到父视图(ListView....)中,并用默认的布局参数填充它。

int getItemViewType(int position):

通过它返回的结果可以用来判断用于填充数据集中指定下标的数据项所使用的视图类型。此方法返回的值应该介于0-(getViewTypeCount返回的结果-1)之间。

int getViewTypeCount():

返回getView可能返回的视图的类型的总和,如果getView每次返回的结果都是一样的,这个方法返回1。adpterView视图有几个不一样的视图,这个方法就返回多少。

List

List:一个元素有序、可重复的集合。集合中每个元素都有其对应的顺序索引。List 集合允许使用重复元素,可以通过索引来访问指定位置的集合元素。
我们可以直接通过 add 方法添加元素,使用 add 方法的时候也可以根据索引值将数据插入特定位置;可以通过 set 方法修改指定索引值位置的元素;可以获取指定元素的索引值。
 

List是一个接口,ArrayList、LinkList继承与这个接口并实现了它.

ArrayList

实例化:

ArrayList<Object> arrayList = new ArrayList<Object>();

常用方法:

ArrayList根类为collection,所以ArrayList可以使用collection中定义的方法

如:

add(); 添加对象 如:arrayList.add("a");

get(); 获取arrayList中的下标对象 如:arrayList.get(1);

size(); 获取arrayList中的元素个数 如:arrayList.size();

remove(); 删除arrayList中的某个下标对象 如:arrayList.remove(1);

LinkedList

LinkedList 是一个双链表,在添加和删除元素时具有比ArrayList更好的性能.但在get与set方面弱于ArrayList.当然,这些对比都是指数据量很大或者操作很频繁的情况下的对比。它还实现了 Queue 接口,该接口比List提供了更多的方法,包括 offer(),peek(),poll()等.

ArrayList和LinkedList在性能上各有优缺点,都有各自所适用的地方,总的说来可以描述如下:

1.在ArrayList的中间插入或删除一个元素意味着这个列表中剩余的元素都会被移动;而在LinkedList的中间插入或删除一个元素的开销是固定的。

2.LinkedList不支持高效的随机元素访问。

3.ArrayList的空间浪费主要体现在在list列表的结尾预留一定的容量空间,而LinkedList的空间花费则体现在它的每一个元素都需要消耗相当的空间。

Android :Activity、Adapter、List的初步学习的更多相关文章

  1. Android NDK开发及OpenCV初步学习笔记

    https://www.jianshu.com/p/c29bb20908da Android NDK开发及OpenCV初步学习笔记 Super_圣代 关注 2017.08.19 00:55* 字数 6 ...

  2. Android 4学习(6):概述 - 深入了解Android Activity

    参考:<Professional Android 4 Application Development> 深入了解Android Activity 每一个Android Activity都对 ...

  3. 【Xamarin开发 Android 系列 3】循序渐进的学习顺序

    原文:[Xamarin开发 Android 系列 3]循序渐进的学习顺序 指定合理的学习步骤,将各个技术点进行强化.慢慢 的就从点到线 到面的飞跃,一切仅仅是时间问题,开始前,请记住,学习是最佳的投资 ...

  4. Android游戏与应用开发最佳学习路线图

    Android 游戏与应用开发最佳学习路线图 为了帮助大家更好的学习 Android,并快速入门特此我们为大家制定了以下学习路线图,希望能够帮助大家. 一.路线图概括: 二.具体需要掌握知识点: 三. ...

  5. Android SDK上手指南:下一步学习方向

    Android SDK上手指南:下一步学习方向 2014-02-28 11:01 核子可乐 译 51CTO 字号:T | T 到目前为止,我们已经介绍过的知识足以帮助大家从非常理想的起点开始进行And ...

  6. Android M Permission 运行时权限 学习笔记

    Android M Permission 运行时权限 学习笔记 从Android 6.0开始, 用户需要在运行时请求权限, 本文对运行时权限的申请和处理进行介绍, 并讨论了使用运行时权限时新老版本的一 ...

  7. Android Activity和Fragment的转场动画

    Android Activity和Fragment的转场动画 Activity转场动画 Activity的转场动画是通过overridePendingTransition(int enterAnim, ...

  8. Android之Adapter用法总结-(转)

    Android之Adapter用法总结 1.概念 Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带.在常见的View(List View,Grid Vie ...

  9. Android之Adapter用法总结(转)

    Android之Adapter用法总结 1.概念 Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带.在常见的View(List View,Grid Vie ...

随机推荐

  1. css类选择器类名覆盖优先级

    code <style> .a{ background: red; } .b{ background: yellow; } </style> <div class=&qu ...

  2. Pwn Heap With Tcache

    Pwn Heap With Tcache 前言 glibc 2.26 开始引入了 tcache , 相关的 commit 可以看 这里 .加入 tcache 对性能有比较大的提升,不过由于 tcach ...

  3. Linux+db2+was部署问题总结

     Linux+db2+was部署问题总结 前段日子在住建部进行了Linux环境下,db2+rbp+was的部署,由于是集群,切涉及到了很多was的东西,搞了很长时间,在此做一个问题总结,供后续查询 ...

  4. vue router 配合transition 切换动画

    把<router-view>嵌套在<transition>里,路由变化的时候,vue会为包裹页面的div增加动画样式,我们要做的就是监听路由变化.定义这些动画样式,以规定页面到 ...

  5. spring测试框架的使用

    junit的使用 1.加入 junit jar包 <dependency> <groupId>junit</groupId> <artifactId>j ...

  6. c# 多线程之-- System.Threading Timer的使用

    作用:每隔多久去执行线程里的方法. class ThreadTimerDemo { static void Main(string[] args) { // Create an AutoResetEv ...

  7. 初探diskstats

    内核很多重要子系统均通过proc文件的方式,将自身的一些统计信息输出,方便最终用户查看各子系统的运行状态,这些统计信息被称为metrics. 直接查看metrics并不能获取到有用的信息,一般都是由特 ...

  8. Orcal数据库,使用EF的自增处理

    1.定义EF拦截器,截获执行命令前的操作.修改执行sql.还需要定义orcal序列,供自增使用 using System; using System.Collections.Generic; usin ...

  9. RabbitMQ学习---RabbitMQ的学习

    [更多参考]http://www.cnblogs.com/alex3714/articles/5248247.html

  10. 铁乐学python_day28_模块学习3

    大部份内容摘自授课老师的博客http://www.cnblogs.com/Eva-J/ OS模块复习一二 >>> import os >>> os.getcwd() ...