- 浏览: 92023 次
- 性别:
- 来自: 长沙
文章分类
最新评论
-
wangyudong:
家里是拨号上网,不行的,找到了一个Holer工具,只需要配置一 ...
【如何通过广域网访问局域网的服务器?】 -
叮咚可乐名:
大数据就是这么任性第一季数据结构和算法http://pan.b ...
数据结构与算法-简介 -
戢_时光:
...
【Java集合之二】Set集合 -
lzg406:
HTTP默认方式下,使用持久连接。 这个值得推敲
【应用层】之一:HTTP协议与FTP协议 -
mute_:
特别腻害呢
正则表达式1:概念
一、Activity生命周期
1. Activity(活动)
活动是 Android 应用框架中的一个核心组件,它在一个窗口(Window)对象中绘制用户接口并响应用户的交互。
2. Activity生命周期
创建一个活动,通常直接继承 Activity,并在子类中重写一系列的回调方法;在活动状态发生改变时,这些方法由应用框架按照特定的顺序调用,我们称其为活动的生命周期。
根据活动的复杂度,也许并不需要实现所有生命周期中的方法,但需要知道每个方法的功能,确保你的应用能像用户期望的那样执行:
不会因为来电话或切换到其他应用而崩溃;
用户离开应用一段时间后返回,不会丢失进度;
用户设备屏幕旋转时,不会丢失进度或崩溃;
GPS 或其他传感器在不需要时不要一直消耗电量。
该周期按照执行的时间顺序可划分为:
(1)完全生命周期
(2)可见生命周期
(3)前台生命周期
(1)完全生命周期
(2)可见生命周期
(3)前台生命周期
保存活动状态:
在系统内存不足时,系统会把处于暂停或停止状态的活动销毁;当用户要再次回到已被销毁的活动时,系统会重新创建该活动。此时,会回调以下方法:
onSaveInstanceState(Bundle savedInstanceState)
onRestoreInstanceState(Bundle savedInstanceState)
3. 活动的任务栈
(1)
一个应用中通常包含多个活动,用户在不同的活动中执行不同的操作,但只有一个处于“活跃”状态:启动一个新的活动,前一个就会停止并被压入一个栈中。
(2)Task:任务
当我们需要一个Activity可以启动另一个Activity,可能另外一个Activity是定义在不同应用程序中的Activity。
Android通过将这两个Activity保存在同一个Task里来实现这一用户体验。简单来说,一个Task就是用户体验上的一个“应用”。 它将相关的Activity组合在一起,以stack的方式管理(就是前面提到的Activity Stack),这就是Task。
每一个Task有自己的Activity栈(Activity Stack)。
4. 在手机上看到Activity生命周期:
在 MainActivity 中创建以下的Activity生命周期中的方法(MainActivity 中右键 -> Generate -> Override Methods...):
这些类中用到了Log日志输出。
将项目部署到手机上,通过打开项目、退出项目等多种操作,可看到Activity生命周期的过程。
1. Activity(活动)
活动是 Android 应用框架中的一个核心组件,它在一个窗口(Window)对象中绘制用户接口并响应用户的交互。
2. Activity生命周期
创建一个活动,通常直接继承 Activity,并在子类中重写一系列的回调方法;在活动状态发生改变时,这些方法由应用框架按照特定的顺序调用,我们称其为活动的生命周期。
根据活动的复杂度,也许并不需要实现所有生命周期中的方法,但需要知道每个方法的功能,确保你的应用能像用户期望的那样执行:
不会因为来电话或切换到其他应用而崩溃;
用户离开应用一段时间后返回,不会丢失进度;
用户设备屏幕旋转时,不会丢失进度或崩溃;
GPS 或其他传感器在不需要时不要一直消耗电量。
该周期按照执行的时间顺序可划分为:
(1)完全生命周期
(2)可见生命周期
(3)前台生命周期
(1)完全生命周期
(2)可见生命周期
(3)前台生命周期
保存活动状态:
在系统内存不足时,系统会把处于暂停或停止状态的活动销毁;当用户要再次回到已被销毁的活动时,系统会重新创建该活动。此时,会回调以下方法:
onSaveInstanceState(Bundle savedInstanceState)
onRestoreInstanceState(Bundle savedInstanceState)
3. 活动的任务栈
(1)
一个应用中通常包含多个活动,用户在不同的活动中执行不同的操作,但只有一个处于“活跃”状态:启动一个新的活动,前一个就会停止并被压入一个栈中。
(2)Task:任务
当我们需要一个Activity可以启动另一个Activity,可能另外一个Activity是定义在不同应用程序中的Activity。
Android通过将这两个Activity保存在同一个Task里来实现这一用户体验。简单来说,一个Task就是用户体验上的一个“应用”。 它将相关的Activity组合在一起,以stack的方式管理(就是前面提到的Activity Stack),这就是Task。
每一个Task有自己的Activity栈(Activity Stack)。
4. 在手机上看到Activity生命周期:
在 MainActivity 中创建以下的Activity生命周期中的方法(MainActivity 中右键 -> Generate -> Override Methods...):
package com.xiangdong.lifecycle; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; public class MainActivity extends Activity { //创建标记常量 private static final String TAG = "MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.v(TAG, "onCreate()"); setContentView(R.layout.activity_main); } @Override protected void onStart() { super.onStart(); Log.v(TAG, "onStart()"); } @Override protected void onResume() { super.onResume(); Log.v(TAG, "onResume()"); } @Override protected void onRestart() { super.onRestart(); Log.v(TAG, "onRestart()"); } @Override protected void onStop() { super.onStop(); Log.v(TAG, "onStop()"); } @Override protected void onDestroy() { super.onDestroy(); Log.v(TAG, "onDestroy()"); } @Override protected void onPause() { super.onPause(); Log.v(TAG, "onPause()"); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); Log.v(TAG,"onSaveInstanceState()"); } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); Log.v(TAG, "onRestoreInstanceState()"); } // 以下代码不做更改------------------------------------------------------------------ @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }
这些类中用到了Log日志输出。
将项目部署到手机上,通过打开项目、退出项目等多种操作,可看到Activity生命周期的过程。
发表评论
-
【攻克Android (43)】WebView (网络视图)
2015-09-09 22:15 1255本文围绕以下两个部分展开: 一、WebView WebVi ... -
WebView (网络视图)
2015-09-09 22:12 0本文围绕以下两个部分展开: 一、WebView WebVi ... -
【攻克Android (41)】HttpURLConnection
2015-09-08 17:43 1386本文围绕以下三个部分展开: 一、HttpURLConnec ... -
HttpURLConnection
2015-09-08 17:42 0本文围绕以下三个部分展开: 一、HttpURLConnec ... -
【攻克Android (40)】JSON解析
2015-09-07 20:49 1276本文围绕以下三个部分 ... -
JSON解析
2015-09-07 20:47 0本文围绕以下三个部分 ... -
【攻克Android (39):XML解析之四】Simple方式解析XML
2015-08-27 18:38 1758本文围绕以下三个部分 ... -
【攻克Android (38):XML解析之三】Pull方式解析XML
2015-08-27 09:25 1758本文围绕以下两个部分展开: 一、Pull解析 案例一:P ... -
【攻克Android (37):XML解析之二】SAX方式解析XML
2015-08-26 15:15 883本文围绕以下两个部分展开: 一、SAX解析 案例一 ... -
【XML解析之一】SAX方式解析XML
2015-08-26 02:58 0本文围绕以下四个部分展开: 一、SAX解析 案例一 ... -
【攻克Android (36):XML解析之一】DOM方式解析XML
2015-08-26 00:27 964本文围绕以下三个部分展开: 一、XML概述 二、DOM解析 ... -
DOM方式解析XML案例
2015-08-26 00:26 0本文围绕以下四个部分展开: 一、DOM解析 案例一 ... -
【XML解析之四】Simple方式解析XML
2015-08-27 18:36 0本文围绕以下三个部分 ... -
【XML解析之一】Pull方式解析XML
2015-08-26 02:56 0本文围绕以下四个部分展开: 一、Pull解析 案例一:P ... -
【攻克Android (22)】View/Tween Animation 视图动画(补间动画)
2015-08-25 21:22 891本文围绕以下四个部分 ... -
【攻克Android (22)】View/Tween Animation 视图动画(补间动画)
2015-08-25 21:21 0本文围绕以下四个部分 ... -
【攻克Android (45)】四大组件之 ContentProvider
2015-08-18 16:24 1139本文围绕以下两个部分展开: 一、ContentProvide ... -
【攻克Android (32)】Notification 通知
2015-08-17 19:57 976本文围绕以下两个部分展开: 一、通知 案例一 一 ... -
Notification 通知
2015-08-17 19:56 0本文围绕以下两个部分展开: 一、通知 案例一 一 ... -
BroadcastReceiver完整版
2015-08-17 13:15 0本文围绕以下四个部分展开: 一、广播 案例一:系统广播(属于 ...
相关推荐
【攻克Data动态获取网页评论,保存数据库】是一个关于利用特定工具——攻克Data,来抓取网页上的评论数据并存储到数据库的过程。这个过程涉及到网络爬虫技术、JSON解析以及数据库管理等多个IT领域的知识点。 1. **...
【大学生攻克Linux系统教程】 本教程专为对Linux操作系统感兴趣的初学者设计,旨在提供一个从零开始学习Linux的全面指南。教程内容涵盖了Linux系统的安装、基本操作、文本编辑器VI的使用、调试工具GDB的基础知识,...
【备战2014】高考历史 精讲巧解分类攻克9
【备战2014】高考化学 精讲巧解分类攻克9
### 如何深入学习Android Framework #### 一、学习Android Framework的重要性 在当今移动互联网时代,Android作为全球最大的移动操作系统之一,...通过不断地实践和探索,逐步攻克各个难点,最终达到熟练掌握的目的。
根据提供的信息,“24学时攻克C++”这本书旨在通过一系列高效的学习计划帮助读者在较短的时间内掌握C++编程语言。尽管仅上传了23页的内容,我们仍然可以从书名、描述以及部分可见的内容中推断出一些关键知识点。 ##...
9. **内存管理**:理解动态内存分配(new和delete)以及指针的概念,知道何时使用智能指针以避免内存泄漏。 10. **编译与调试**:了解如何使用编译器(如GCC或Clang)编译C++程序,使用调试工具(如GDB)进行调试,...
大学生攻克Linux系统教程(又名天下没有难学的Linux)。一位在校大学生整理的教程,献给每一位要征服Linux的学习者-五星级的Linux教程。 本书汇集众多Linux学习者的心血与贡献,有很多作者在默默的为你呼喊,感谢...
8天攻克8000词汇,word版,方便学习,背单词的好东东
同时,修改`AndroidManifest.xml`文件中的activity标签,将`android:name`指向`HelloJni`类。 7. 配置Builder:在Eclipse中,配置新建的Builder。确保在Main选项卡中正确设置了`ndk-build.cmd`的路径和工程根目录。...
标题中的“新东方8天攻克8000单词魔鬼训练营”揭示了一个高效学习英语单词的课程项目。新东方作为知名的教育机构,以其在英语教学领域的专业性而著称,这个训练营可能是一个针对英语学习者设计的高强度、短期记忆...
### 9. 指针 指针是C++的一个强大特性,但也是一把双刃剑。正确理解和使用指针可以大大提高程序的效率和灵活性,但不当使用会导致诸如空指针解引用和野指针等严重错误。 ### 10. 高级指针 进一步讨论指针的高级...
【备战2014】高考生物精讲巧解分类攻克9是针对高中生物学习的一份资料,主要涉及的内容包括基因突变、生物变异、细胞分裂、遗传规律等多个生物学核心知识点。 1. 基因突变是生物变异的主要来源,它可以发生在所有...
在Android平台上实现自动来电录音是一项技术挑战,但并非无法攻克。Android系统提供了丰富的API和工具,使得开发者可以创建各种功能丰富的应用,包括来电录音。在本文中,我们将深入探讨如何利用Android的...
【备战2014】高考数学精讲巧解分类攻克9是针对高中毕业生备考高考数学的一项专项训练。这个部分主要涵盖了选择题的解答技巧和策略,旨在帮助学生提高选择题的解题速度和准确率。以下是一些重要的知识点: 1. **概率...
- **Android四大组件**:Activity、Service、BroadcastReceiver和ContentProvider,这些组件构成了Android应用的基础结构,开发者需要熟练掌握它们之间的交互逻辑。 - **UI设计**:采用Material Design设计风格,...
在学习编程语言C++的过程中,24学时的课程安排是一个相当常见的学习进度,这个压缩包文件名为"24学时攻克C++源码及习题答案",显然是为初学者设计的一套完整教程。C++是面向对象编程的重要语言,它的强大功能和广泛...
- **核心概念理解:** 掌握Activity、Intent、Service、Broadcast Receiver等基本组件的概念对于Android开发至关重要。这些组件构成了Android应用的基本结构。 **5. 使用Flash、Flex与AIR开发Android应用** - **...