安卓的三个基本概念:Activity、Adapter 和 List

版权声明:from Hasson https://blog.csdn.net/has_son/article/details/79895563

Activity

一、基本概念

    Activity是Android的四大组件(activityservicecontent providerbroadcast receiver)之一,简单来说就是一个界面,一个用于与用户交互的界面,一个app有最少一个Activity。

二、生命周期

    一个Activity的生命周期在app执行的过程中有运行(Running)、暂停(Paused)、停止(Stopped)、被销毁(Killed)这四个状态。在用户或安卓系统做了某些措施(执行相关方法)后,该Activity的生命周期会发生相应的变化。

 

                    Activity的状态转换图解

Activity状态
状态    是否有内存实例 用户是否可见 是否处于最前面
Killed N N N
Stopped Y N N
Paused Y Y N
Running Y Y Y

下面用Android Studio的日志更清晰的给大家展示一下Activity生命周期的转换。

先在Activity.java中 加入以下方法:

private static final String TAG = "aActivity";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d(TAG,"onCreate() called");
        setContentView(R.layout.activity_quiz);
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.d(TAG,"onResume() called");
    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.d(TAG,"onPause() called");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.d(TAG,"onDestroy() called");
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.d(TAG,"onStop() called");
    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.d(TAG,"onStart() called");
    }

可以看到 当我们打开应用的时候,同时调用了onCreate(),onStart(),onResume()三个方法,而当我们按下后退键关闭应用的时候,调用了onPause(),onStop(),onDestroy()三个方法。

三、不同Activity中的转换

先介绍几个概念:

ActivityManager:安卓系统中控制Activity的结构,当我们按下后退键,home键时,其实是把Activity交给安卓系统的ActivityManager处理

Activity栈:用于存放若干个Activity(不一定属于同一个应用)的栈。

intent类:可用于在一个Activity中调用另外一个Activity类、在不同activity中传递数据。

    //firstActivity.java
    Intent intent = new Intent(firstActivity.this, secondActivity.class); 
    intent.putExtra("stringData", "hello"); 
    intent.putExtra("intData", 100);

这里我们构造了一个新intent,在firstActivity中调用secondActivity,并调用intent的putExtra函数,把stringData,intData俩个个变量传递给secondActivity中

getIntent().getStringExtra("stringData");  
getIntent().getIntExtra("intData", 0);  

调用相应的getIntent().getXXXExtra()以返回从firstActivity中传递的变量值。


Adapter

一、概念

Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带。经常与listView连用

二、分类及用法

BaseAdapter,ArrayAdapter,SimpleAdapter等等

其中这三个是最常用的

BaseAdapter

使用起来比其他适配器有些麻烦,但是使用它却能实现很多自己喜欢的列表布局,比如ListView、GridView、Gallery、Spinner等等。它是直接继承自接口类Adapter的,使用BaseAdapter时需要重写很多方法.其中这四个方法最重要

  1. getCount : 要绑定的条目的数目,比如格子的数量
  1. getItem : 根据一个索引(位置)获得该位置的对象
  1. getItemId : 获取条目的id
  1. getView : 获取该条目要显示的界面

ArrayAdapter

列表的显示需要三个元素:

  1. ListVeiw 用来展示列表的View。
  1. 适配器 用来把数据映射到ListView上的中介。
  1. 数据    具体的将被映射的字符串,图片,或者基本组件。主要用于简单的文本字符串的实现

SimpleAdapter

SimpleAdapter与BaseAdapter类似,也可以比较灵活。

SimpleAdapter使用的数据结构是 HashMap ,这意味着,如果需要操作的数据对象结构过于复杂时,比如成员很多,成员内容不是基本类型等情况时,需要写相关的转化代码,这会便利程序的效率和可维护性变差 。有时,我们会面临使用哪种适配器的问题。如果数据结构很简单,操作的数据对象成员很少,没有非基本类型的数据成员,只是做为简单的展示,那么 simpleadapter 是很好的选择,简捷高效快速。如果成员很多,成员中包含复杂的对象,如 Button , darwable 等,使用baseadapter 会让代码变得简捷效率。

List


如图所示,List是继承至Collection的一个接口

一个 List 是一个元素有序的、可以重复、可以为 null 的集合(有时候我们也叫它“序列”)。
Java 集合框架中最常使用的几种 List 实现类是 ArrayList,LinkedList 和 Vector。在各种 List 中,最好的做法是以 ArrayList 作为默认选择。 当插入、删除频繁时,使用 LinkedList,Vector 总是比 ArrayList 慢,所以要尽量避免使用它。

List并不是Android特有的结构,在此不做详细介绍。


猜你喜欢

转载自blog.csdn.net/has_son/article/details/79895563