前情提要(Previously)

本系列将使用 Android Studio 将《第一行代码》(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Android Studio 作为开发 IDE 的同学开路。

PS:其实我就是现学现卖,希望我能坚持刷完。

系列目录在此:

摘要(Abstract)

Activity 的生命周期、启动模式、一键退出 App。

Activity 的生命周期

Activity 类中定义了七个回调方法,覆盖了其生命周期的每一个环节。

  • onCreate(),创建时调用。
  • onStart(),由不可见变为可见时调用。
  • onResume(),准备好显示时调用。
  • onPause(),系统准备去启动或恢复另一个 Activity 时调用。
  • onStop(),完全不可见时调用。
  • onDestroy(),被销毁之前调用。
  • onRestart(),重新启动时调用。

以上七个方法中除了 onRestart() 方法,其他都是两两相对的,从而又可以将活动分为三种生存期。

  • 完整生存期,onCreate() 和 onDestory() 之间。
  • 可见生存期,onStart() 和 onStop() 之间。
  • 前台生存期,onResume() 和 onPause() 之间。

加深对 Activity 生命周期的理解,可以看看下面这篇文章。

Activity 的启动模式

Android 是使用返回栈来管理 Activity 的。Activity 有四种启动模式,可以在 AndroidManifest.xml 中通过给 activity 标签增加 launchMode 属性来选择启动模式。

  • standard,默认启动模式,系统不管此 Activity 是否已经在返回栈中存在,每次启动 Activity 都会创建该 Activity 的一个新的实例。
  • singleTop,在启动 Activity 时,如果发现返回栈的栈顶是该 Activity,则直接使用她,不会再创建新的实例;如果栈顶不是该 Activity,则会创建新的实例。
  • singleTask,在启动 Activity 时,如果找到返回栈中已经存在该 Activity,则直接使用,并将这个 Activity 之上的所有 Activity 全部出栈;如果没找到,则会创建新的实例。
  • singleInstance,会启用一个新的返回栈来管理这个活动,并保证不再有其他 Activity 的实例进入。

加深对 Activity 启动模式的理解,可以看看下面这篇文章。

一键退出

如果在操作一个 App 时已经进入了好几个界面,想退出的时候可能需要按好几次 Back 键才行。书中给出了一个很不错的方案。

  • 新建一个 ActivityCollector 类 作为 Activity 管理器,代码如下:
public class ActivityCollector {

    public static List<Activityactivities =new ArrayList<Activity>();

    public static void addActivity(Activity activity){
activities.add(activity);
} public static void removeActivity(Activity activity){
activities.remove(activity);
} public static void finishAll(){
for(Activity activity : activities){
if(!activity.isFinishing()){
activity.finish();
}
}
}
}
  • 创建一个 BaseActivity 继承 Activity,重写 onCreate()、onDestroy() 方法,代码如下:

public class BaseActivity extends Activity {

  @Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
ActivityCollector.addActivity(this);
} @Override
protected void onDestroy(){
super.onDestroy();
ActivityCollector.removeActivity(this);
}

}

  • 在所有的 Activity 中继承 BaseActivity

  • 在需要一键退出的地方调用 ActivityCollector.finishAll()

其它(Miscellaneous)

尽管我试图在本文中尽量完整的进行描述,但受限于篇幅和我的个人水平,本文难免有所遗漏,欢迎在评论中指出。

如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!

关于作者(About Me)

addict

原文链接:http://www.cnblogs.com/DebugLife/p/4351970.html

本文谢绝转载,如需转载需征得作者本人同意,谢谢。

Android Studio 单刷《第一行代码》系列 04 —— Activity 相关的更多相关文章

  1. android第一行代码-3.activity之间的调用跟数据传递

    前面两节所有应用都是同一个activity中的,是时候讲activity之间交互的操作了,此后会涉及到intent这个概念,这也算一个新的里程碑开始. 主要内容包括intent的使用,以及activi ...

  2. android第一行代码-2.activity基本用法

    摘要: 本节主要涉及到的有activity的创建,标题栏隐藏,button绑定方法(toast的使用),menu使用,活动销毁 1.activity的创建跟注册 创建: public class Te ...

  3. Android Studio 单刷《第一行代码》系列目录

    前言(Prologue) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Android ...

  4. Android Studio 单刷《第一行代码》系列 02 —— 日志工具 LogCat

    前情提要(Previously) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Andr ...

  5. Android Studio 单刷《第一行代码》系列 01 —— 第一战 HelloWorld

    前言(Prologue) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Android ...

  6. Android Studio 单刷《第一行代码》系列 07 —— Broadcast 广播

    前情提要(Previously) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Andr ...

  7. Android Studio 单刷《第一行代码》系列 06 —— Fragment 生命周期

    前情提要(Previously) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Andr ...

  8. Android Studio 单刷《第一行代码》系列 05 —— Fragment 基础

    前情提要(Previously) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Andr ...

  9. Android Studio 单刷《第一行代码》系列 03 —— Activity 基础

    前情提要(Previously) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Andr ...

随机推荐

  1. HTML特殊符号对照表(转)

    table { border-collapse: collapse; } #htmlchar-container-list { width: 100%; border-top: 2px solid # ...

  2. 获取登录的IP或者信息

    这是转载的,也不想去检查性能,对于这些成熟的代码,发在这里完全是懒,仅此而已! 1.获取客户端IP /// <summary> /// 获取客户端Ip /// </summary&g ...

  3. HDOJ2027统计元音

    统计元音 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  4. Java 源码学习线路————_先JDK工具包集合_再core包,也就是String、StringBuffer等_Java IO类库

    http://www.iteye.com/topic/1113732 原则网址 Java源码初接触 如果你进行过一年左右的开发,喜欢用eclipse的debug功能.好了,你现在就有阅读源码的技术基础 ...

  5. 转:ASP.NET中的SESSION实现与操作方法

    在ASP.NET中,状态的保持方法大致有:ApplicationState,SessionState,Cookie,配置文件,缓存. ApplicationState 的典型应用如存储全局数据. Se ...

  6. 日程管理控件 glDatePicker

    之前接触过一款日程管理控件,叫 FullCalendar,功能很强大,会列出每天的事项,可选择编辑并且可以定制自己的日历,然而,有时候,我们的网页上只需要一个简单的日历,迷你但实用,有日程安排的日期高 ...

  7. 关键字 static

    A. 面向过程: 1. 静态全局变量:在全局变量前,加上关键词static,该变量就被定义成为一个静态全局变量. 1.1. 特点: |该变量在全局数据区分配内存: |未经初始化的静态全局变量会被程序自 ...

  8. c++ algorithm 的用法

    1 , accumulate()template<class _II, class _Ty> inline_Ty accumulate(_II _F, _II _L, _Ty _V){fo ...

  9. java集合的互转

    List<-->数组.List<-->Set.数组<-->Set.Map将键转化为Set.Map将值转化为Set.Map将值转化为List等集合常 public c ...

  10. sql 查询练习

    1. 用一条SQL 语句 查询出每门课都大于80 分的学生姓名name kecheng fenshu 张三 语文 81张三 数学 75李四 语文 76李四 数学 90王五 语文 81王五 数学 100 ...