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. Is there a difference between `==` and `is` in Python?

    There is a simple rule of thumb to tell you when to use == or is. == is for value equality. Use it w ...

  2. iframe使用方法

    --点击按钮会把地址里的页面显示在oframe里,对iframe可以设置宽和高<iframe src="demo_iframe.htm" name="iframe_ ...

  3. C# 使用SqlBulkCopy类批量复制大数据

    用途说明: 前些日子,公司要求做一个数据导入程序,要求将Excel数据,大批量的导入到数据库中,尽量少的访问数据库,高性能的对数据库进行存储.于是在网上进行查找,发现了一个比较好的解决方案,就是采用S ...

  4. .NET 获取类型中的属性

    解决方案      通过反射的方式获取类型中的所有属性. 引用命名空间 using System.Reflection; 实体类 public class User { private string ...

  5. Schwarz积分公式

    设$f\in H(B(0,R))\cap C(\overline{B(0,R)})$,且$f=u+iv$,则$f$可用其实部表示为 $$f(z)=\frac{1}{2\pi}\int_{0}^{2\p ...

  6. PHP字符串处理

    /*1 字符串格式化 */ $str = ' php '; //清理两边的空格trim();,左边ltrim(); 边rtrin() echo trim($str); //nl2br();将换行符\n ...

  7. 朴素贝叶斯算法的python实现

    朴素贝叶斯 算法优缺点 优点:在数据较少的情况下依然有效,可以处理多类别问题 缺点:对输入数据的准备方式敏感 适用数据类型:标称型数据 算法思想: 朴素贝叶斯比如我们想判断一个邮件是不是垃圾邮件,那么 ...

  8. 【Cocos2d-x for WP8 学习整理】(2)Cocos2d-Html5 游戏 《Fruit Attack》 WP8移植版 开源

    这一阵花了些时间,把 cocos2d-html5 里的sample 游戏<Fruit Attack>给移植到了WP8上来,目前已经实现了基本的功能,但是还有几个已知的bug,比如WP8只支 ...

  9. [leetcode] 题型整理之排列组合

    一般用dfs来做 最简单的一种: 17. Letter Combinations of a Phone Number Given a digit string, return all possible ...

  10. 简述UIScrollView的属性和用法

    contentOffset 默认CGPointZero,用来设置scrollView的滚动偏移量.       // 设置scrollView的滚动偏移量       scrollView.conte ...