跟我学Android之十四 Activity的生命周期

Posted teayear

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了跟我学Android之十四 Activity的生命周期相关的知识,希望对你有一定的参考价值。

视频课:零基础学安卓Android移动开发

本章内容

第1节 Activity生命周期

第2节  列表Activity

本章目标

掌握Activity的生命周期

熟练掌握生命周期回调方法的执行时刻。

熟练掌握生命周期方法的应用。

熟练掌握ListActivity的应用。

Activity介绍

l对于任何一个android应用程序来讲,Activity类都是其核心组成部分。许多时候,在应用程序中,你将会为每一个屏幕显示定义和实现一个Activity。 例如,一个简单的游戏应用程序可能会包含以5个Activity:

Activity的生命周期

Android操作系统允许同时运行多个应用程序,但同一时间只能有一个Activity处于前台 Android操作系统跟踪所有运行的Activity对象,并将这些对象放进一个Activity栈中,当一个新的Activity启动时,处于栈顶的Activity将会暂停,而这个新的Activity则放入栈顶。当这一新的Activity完成时,它从栈中被移除,而先前的Activity则又回到栈顶

l与独立运行的应用程序不同,Activity没有main函数 lActivity在生命周期的不同阶段将会执行不同的回调函数 l常用的回调函数如下: ØonCreate():初始化用户界面相关内容 ØonStart() ØonResume():初始化和接收Activity数据 ØonPause():停止、保存和释放Activity数据 ØonStop() ØonRestart() lActivity只会停留在Resumed、Paused、Stopped三种状态 l其他状态都会在回调函数执行完成之后立刻进入下一个状态 •

u通过桌面图标启动的Activity必须用<intent-filter>声明如下:
<activity  android:name=".MainActivity“  android:label="@string/app_name">

        <intent-filter>

                <action android:name="android.intent.action.MAIN"/>

                <category android:name="android.intent.category.LAUNCHER"/>

        </intent-filter>

</activity>

           一个应用中如果没有定义MAIN或者LAUNCHER的Activity,主界面和应用菜单中都不会出现该应用的图标,整个Activity的运行过程中onCreate只运行一次,应该在onCreate中初始化用户界面相关的内容

                一个正在运行的应用遇到如下情况时将会暂停(执行onPause),当一个半透明的Activity打开时,比如,某个后台服务弹出了一个对话框,此时当前的Activity被部分遮挡

当Activity从后台再次被切换到前台来的时候(执行onResume) 在应用进入暂停状态时,onPause回调函数将执行,在onPause中应该执行适当的资源释放任务,比如,释放摄像头资源停止视频播放,但不要在onPause中执行耗时操作,比如保存当前状态任何长时间消耗CPU的动作

当前Activity常常会因为如下情况而停止(onPause->onStop),用户按下Home键,进入主界面 另一个Activity被启动,完全遮住了当前Activity 运行中有电话呼入,当另一个应用退出或用户选择了桌面图标重新启动时 onRestart、onStart、onResume会被顺序执行

uonStop方法中应该尽量释放所有资源 因为有些极端情况下,onDestroy可能不会执行 虽然在此之前,onPause会执行,但是耗时的操作还是应该写在这里 当Activity再次启动时 虽然onRestart会执行,但是恢复资源的操作应该写在onStart里面 因为第一次启动Activity是onStart也会执行 重新创建Activity

       

有时候,系统为了获得足够的内存会销毁后台的Activity

比如横竖屏切换时

销毁时,系统会存储一些信息(执行onSaveInstanceState)

可以通过程序存储必要的信息

在重新启动Activity时会传回这些信息

onRestoreInstanceState和onCreate都会得到这些信息

onCreate在第一次创建时也会执行

数据的恢复任务应该在onCreate写更好

有时候,系统为了获得足够的内存会销毁后台的Activity 比如横竖屏切换时 销毁时,系统会存储一些信息(执行onSaveInstanceState) 这时,可以通过程序存储必要的信息 在重新启动Activity时会传回这些信息 这时onRestoreInstanceState和onCreate都会得到这些信息 lonCreate在第一次创建时也会执行 所以数据的恢复任务应该在onCreate写更好

ListActivity是一个默认包含一个ListView的Activity

写一个类继承ListActivity就获得了包含ListView的Activity 通过setListAdapter方法可以为ListView提供适配器 通过getListView可以获得ListView的对象 调用其中的setEmptyView的方法可以设置ListView为空时的显示视图 ListActivity默认注册了OnItemClickListener 需要处理事件时只需要覆盖onListItemClick方法就可以了

public class MyListActivityextendsListActivity

  @Override

  protectedvoid onCreate(BundlesavedInstanceState)

  super.onCreate(savedInstanceState);

  List<String>list = new ArrayList<String>();

  list.add("北京");

  list.add("上海");

  list.add("广州");

  ArrayAdapteradapter = newArrayAdapter(this,android.R.layout.simple_list_item_1,list);

  setListAdapter(adapter);

 

首选项的作用

u首选项指的是应用程序的配置选项 u主要用来配置功能设置 Ø通常设置成用/不用、是/不是 Ø或者设置名称、选择项等等 u几乎所有的应用都需要使用配置 u配置选项的界面特点都是类似的 Ø如右图示例所示 uAndroid为配置选项提供了基础类 ØPreferenceActivity

以上是关于跟我学Android之十四 Activity的生命周期的主要内容,如果未能解决你的问题,请参考以下文章

android源码解析(二十四)-->onSaveInstanceState执行时机

跟我学Android之十二 文件解析与处理

跟我学Android之十 对话框

跟我学Android之十 对话框

跟我学Android之十三 SQLite数据库操作

Android基础之十四数据存储 之 SQLite数据库详解