前情提要(Previously)

本系列将使用 Android Studio 将《第一行代码》(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Android Studio 作为开发 IDE 的同学开路。
PS:其实我就是现学现卖,希望我能坚持刷完。

系列目录在此:

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

摘要(Abstract)

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

Activity 的生命周期

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

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

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

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

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

  • 两分钟彻底让你明白Android 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 启动模式的理解,可以看看下面这篇文章。

  • 基础总结篇之二:Activity的四种launchMode

一键退出

如果在操作一个 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 {

  @Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);ActivityCollector.addActivity(this);}@Overrideprotected 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阅读手札:第一行代码(第一章)

    <第一行代码>作为Android开发入门的经典书籍,是我们非常好的阅读选择,初学者可以迅速了解相关知识,老司机也可以温故知新巩固基础.笔者使用该书的第二版,也就是绿色封面的第一章节< ...

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

    本文转载自: http://www.cnblogs.com/debuglife/p/4355687.html 作者:DebugLife 转载请注明该声明. 前言(Prologue) 本系列将使用 An ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. Android之WebView网页滚动截图
  2. 牛客网SQL篇刷题篇(38-47)
  3. 面临重重挑战 华为造车之路任重道远
  4. SQLPrompt关闭联网
  5. C\C++ | FILE文件基本操作函数
  6. android相机网格,Android – 在相机上显示网格线
  7. SQL Sever:关于外键引用无效表的问题
  8. WiFi温湿度传感器开发
  9. 【钟表识别】基于计算机视觉实现钟表时间识别含Matlab源码
  10. 电视制式,480p,720p,1080p
  11. Jenkins设置Window编译环境从节点
  12. python爬虫学习教程,用python爬取新浪微博数据
  13. 【Python】Matplotlib画图(二)——根据函数公式画图
  14. 免费实用的CAD移动端看图软件有它就够了!
  15. 平安银行B2B现货通产品对接
  16. Shopee发布Apple(苹果)品牌限售政策
  17. 简易电子琴的设计( 汇编)
  18. 江湖魔头-BugkuCTF(最新)
  19. 基于MATLAB的汽车出入库计时计费系统
  20. 网游防沉迷系统 - 呼之欲又出

热门文章

  1. Java元组Tuple使用实例--转载
  2. 运行React-Rative工程MyProject错误
  3. 【复杂网络】用户画像不应脱离社会关系,谈复杂网络的关键技术和应用实践
  4. 区块链即数字生产关系
  5. FinTech-Blockchain区块链
  6. 如何用 Python 和机器学习帮你决策?
  7. Newton-Raphson method
  8. 揭秘高效协作工具背后的技术架构
  9. 学习笔记Hadoop(十四)—— MapReduce开发入门(2)—— MapReduce API介绍、MapReduce实例
  10. python 计算算术平方根