1. 安卓中的 Activity 大致等于桌面应用中的window

2. Activity 的生命周期由系统控制, 所以在开发时要假设 Activity 会被随时销毁掉的情况,

比如: 应用中有一个 ActivityA,用户在 ActivityA 的基础上启动了 ActivityB, ActivityA 就进入了停止状态,这个时候由于系统内存不足,将ActivityA销毁掉了,然后用户按下 Back 键要返回 ActivityA 时, 会出现什么情况呢?

此时, ActivityA 还是会正常显示, 不过这时显示的ActivityA 并不是之前的 ActivityA, 而是系统重新创建的, 所以不会调用 OnRestart 方法, 而是调用 OnCreate 方法.

这样就又产生了一个新问题,  如果ActivityA 中有一些临时数据, 比如文本框控件中输入的值, 这些数据要如何保存?

此时, 可以使用 OnSaveInstanceState 回调方法, 安卓系统保证此方法会在 Activity 被销毁前调用, 所以可在此方法中保存数据, OnSaveInstanceState 有一个Bundle 类型的参数对象, 此对象用于保存数据, 之后当 OnCreate 方法被调用时会传入此对象.

3. 一个App 中可以有多个 Activity , 每个Activity 都必须在 manifest 文件中注册后才可使用,

为Activity(活动) 设置 intent-filter(意图过滤器) 以便让系统自动启动相应Activity , 比如将Activity 的 intent-filter 设置为

      <intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

这样, 此Activity 将作为App 的主Activity ,运行此app 时将默认启动此Activity (类似于桌面应用的主窗口)

4. 当系统接收到一个意图后, 将搜索所有在系统中注册的Activity ,根据其设置的intent-filter 找到最匹配的Activity ,然后启动Activity .如果找到多个匹配项, 则弹出程序选择框(类似于windows中打开一个未指定默认程序的文件, 不同点在于, 安卓中运行程序后并不一定会打开主窗口, 而是直接启动匹配意图的相应窗口)

5. Activity 保存在一个后进先出栈中, 创建一个新Activity时, 会向栈中压入此Activity, 所以此Activity显示在最顶层, 按下返回键时会销毁当前 Activity, 重新显示上一个 Activity

6. 可调用 Activity 的 Finish 方法销毁实例自身, 调用此方法后并不是立即销毁, 还会依次执行 OnPause, OnStop, OnDestroy 方法. (类似于Window.Close方法)

7. 新建 Activity (Xamarin.Android)

例1: 创建一个意图, 根据此意图启动活动窗口, 此意图对象可携带数据

        private void BtnNew_Click(object sender, EventArgs e)
{
//throw new NotImplementedException();
//创建一个意图对象, 指定上下文参数为this, 要创建的活动为TestActivity
Intent intent = new Intent(this, typeof(TestActivity));
//向意图中压入数据(键值对), 用于传递数据
intent.PutExtra("Key1", "TestText");
intent.PutExtra("Key2", );
//创建活动
StartActivity(intent);
}

在活动中可取出意图中携带的数据

        private void Btn1_Click(object sender, EventArgs e)
{
//throw new NotImplementedException();
//获取数据时要根据数据的类型使用相应的方法
string key1 = this.Intent.GetStringExtra("Key1");
int key2 = this.Intent.GetIntExtra("Key2", );
Toast.MakeText(this, String.Format("key1:{0}, key2:{1}", key1, key2), ToastLength.Long).Show();
}

例2: 直接启动

StartActivity(typeof(TestActivity));

8. 隐藏窗口标题栏

在调用 SetContentView(Resource.Layout.Main); 之前调用 RequestWindowFeature(WindowFeatures.NoTitle);

Android--Activity(活动)的更多相关文章

  1. Android四大组件之Activity(活动)及其布局的创建与加载布局

    Android四大组件之Activity(活动)及其布局的创建与加载布局 什么是Activity ? 活动(Activity)是包含用户界面的组件,主要用于和用户进行交互的,一个应用程序中可以包含零个 ...

  2. Android学习之基础知识四-Activity活动5讲(Activity的生命周期)

    一.返回栈 1.Android是通过任务(Task)来管理活动,一个任务就是一个返回栈内所有活动的集合. 2.返回栈是一个后进先出的数据结构,每启动一个新的活动,该活动就会覆盖原来的活动,位于栈顶位置 ...

  3. Android学习之基础知识四-Activity活动3讲(Intent的使用)

    主活动名称FirstActivity.java改为了MenuTest.java 一.什么是Intent: 1.Intent是Android程序中各组件之间进行交互的重要方式,不仅可以指明当前组件想要进 ...

  4. Android学习路-activity活动

    activity即活动,是一种包含用户界面的组件,用于与用户进行交换   创建activity类 1.类继承Activity, activity传递一个bundle对象,可以获得onSaveInsta ...

  5. android Activity生命周期(设备旋转、数据恢复等)与启动模式

    1.Activity生命周期     接下来将介绍 Android Activity(四大组件之一) 的生命周期, 包含运行.暂停和停止三种状态,onCreate.onStart.onResume.o ...

  6. xamarin Android activity生命周期详解

    学Xamarin我为什么要写这样一篇关于Android 的activity生命周期的文章 已经学Xamarin android有一段时间了,现在想起当初Xamarin也走了不少的弯路.当然Xamari ...

  7. 【Android4高级编程笔记】深入探讨Android Activity

    创建Activity 要创建一个新的Activity,需要对Activity类进行扩展,在新类定义用户界面并实现新的功能. 视图是用来显示数据和提高用户交互的Ui控件.Android提供了多个布局类, ...

  8. Android:Activity+Fragment及它们之间的数据交换.

    Android:Activity+Fragment及它们之间的数据交换 关于Fragment与Fragment.Activity通信的四种方式 比较好一点的Activity+Fragment及它们之间 ...

  9. Android Activity launchMode研究

    Android Activity launchMode研究 Activity的Launch mode一共有四种: standard, singleTop, singleTask, singleInst ...

  10. android Activity类中的finish()、onDestory()和System.exit(0) 三者的区别

    android Activity类中的finish().onDestory()和System.exit(0) 三者的区别 Activity.finish() Call this when your a ...

随机推荐

  1. Unity3D LuaComponent(基于ulua)

    LuaComponent可以支持配一个需要执行在这个gameObject上的lua脚本,并且每个gameObject上的lua都是一个实例 using UnityEngine; using LuaIn ...

  2. jquery检测浏览器类型

    使用jquery如下代码检测浏览器版本时:出问题,在检测IE浏览器,如果版本是IE11时,会出现 $.browser.msie的返回值是false,$.browser.mozilla的返回值是true ...

  3. HTML 简单的介绍

    Q: 什么是HTML? A: HTML 是一种超文本标记语言. 所谓的超文本是指指页面内可以包含图片,链接,甚至音乐.程序等非文字元素.超文本标记语言的结构包括"头"部分(英语:H ...

  4. 如何在一个页面后面随机跳转到多个链接地址Math.floor()和Math.random()

    点击一个标签随机跳转到多个链接地址,主要运用javascript中的Math.floor()和Math.random()方法 floor(x) 方法是向下去整数 参数为任意数值或表达式. floor( ...

  5. Markdown 文档格式编写语法

    http://www.cnblogs.com/cxf520/p/6179294.html

  6. setTimeout使用闭包功能,实现定时打印数值

    我们这次使用setTimeout来实现一个按照时间定时,依次打印数值的例子.其实在早期的时候,也是我经常犯的一个错误,或者实现这种能力,似乎js比较牵强,其实是我的错,哈哈!没能理解JS强大之处.我们 ...

  7. oracle 11g crs检测结果

    +ASM1@testdb11a /oracle/media/grid$ ./runcluvfy.sh stage -pre crsinst -n testdb11a,testdb11b -verbos ...

  8. [MongoDB]安装MongoDB

    汇总: 1. [MongoDB]安装MongoDB2. [MongoDB]Mongo基本使用:3. [MongoDB]MongoDB的优缺点及与关系型数据库的比较4. [MongoDB]MongoDB ...

  9. ubuntu wifi连接不上或经常断网,重启就好

    问题1.知道wifi密码,驱动也有,可以点击连接,总是提示"连接断开,您现在处于离线状态". 1.打开终端"ctrl+alt+T" 2.输入: sudo vim ...

  10. MIT 6.828 JOS学习笔记3. Exercise 1.2

    这篇博文是对Lab 1中的Exercise 2的解答~ Lab 1 Exercise 2: 使用GDB的'si'命令,去追踪ROM BIOS几条指令,并且试图去猜测,它是在做什么.但是不需要把每个细节 ...