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. Reverse Integer

    Reverse digits of an integer. Example1: x = 123, return 321Example2: x = -123, return -321 public cl ...

  2. Java设计模式之结构型模式

    结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式. 一.适配器模式: 意图: 将一个类的接口转换成客户希望的另外一个接口.Adapter 模式使得原本由于接 ...

  3. “连接配置中心失败,将无法进行正常管理”--腾讯通RTX管理器

    [故障现象]: 腾讯通RTX管理器提示“连接配置中心失败,将无法进行正常管理” [解决办法]: 在系统服务中启动“RTX_ConfigCenter”服务即可. 文章收集自网络

  4. LeetCode 219 Contains Duplicate II

    Problem: Given an array of integers and an integer k, find out whether there are two distinct indice ...

  5. des (C语言)

    /** * \file des.h * * \brief DES block cipher * * Copyright (C) 2006-2010, Brainspark B.V. * * This ...

  6. php随机生成验证码代码

    <?php session_start(); //产生一个随机的字符串验证码 $checkcode=""; for ($i=0;$i<4;$i++){ $checkco ...

  7. Java enum的用法详解[转]

    Ref:http://www.cnblogs.com/happyPawpaw/archive/2013/04/09/3009553.html 用法一:常量 在JDK1.5 之前,我们定义常量都是: p ...

  8. Macbook Pro 使用小记

    本周到手Macbook Pro,很激动.刚刚使用了几天,简单记下自己的感受.   Macbook Pro的硬件配置和做工真没得说,非常完美. 触控板很强大.很好用,鼠标可以基本不用了,但要稍微学习一下 ...

  9. ASP.NET MVC 插件化机制

    概述 nopCommerce的插件机制的核心是使用BuildManager.AddReferencedAssembly将使用Assembly.Load加载的插件程序集添加到应用程序域的引用中.具 体实 ...

  10. Spring中文文档

    前一段时间翻译了Jetty的一部分文档,感觉对阅读英文没有大的提高(*^-^*),毕竟Jetty的受众面还是比较小的,而且翻译过程中发现Jetty的文档写的不是很好,所以呢翻译的兴趣慢慢就不大了,只能 ...