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

举报
tea_year 发表于 2021/12/30 00:56:05 2021/12/30
【摘要】 视频课:【免费】跨平台APP JQuery Mobile开发-1-初探移动开发-张晨光的在线视频教程-CSDN程序员研修院 本章内容 第1节 Activity生命周期 第2节  列表Activity 本章目标 掌握Activity的生命周期 熟练掌握生命周期回调方法的执行时刻。 熟练掌...

视频课:【免费】跨平台APP JQuery Mobile开发-1-初探移动开发-张晨光的在线视频教程-CSDN程序员研修院

本章内容

第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

文章来源: aaaedu.blog.csdn.net,作者:tea_year,版权归原作者所有,如需转载,请联系作者。

原文链接:aaaedu.blog.csdn.net/article/details/51918087

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。