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的执行过程

Android :Activity、Adapter、List的初步学习-LMLPHP

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的空间花费则体现在它的每一个元素都需要消耗相当的空间。

05-11 17:24