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. JS date常用代码积累

    Date.prototype.Format = function(fmt) { var o = { "M+" : this.getMonth()+1, //月份 "d+& ...

  2. NameError: name 'sys_platform' is not defined

    pip install --upgrade distribute

  3. Android编程容易犯的错误之二

    11.不要太相信工具,比如Eclipse里面的断点遇到多线程什么,经常不起作用/走不到,还有就是如果语句为空的也不会走,这时候别太早下结论断点地方出错了, 所以每个工程都应该有日志的开关,通过查看日志 ...

  4. javaWeb项目部署到阿里云服务器步骤

    记录web项目部署到阿里云服务器步骤 (使用 web项目.阿里云服务器.Xftp.Xshell),敬请参考和指正 1.将要部署的项目打包成WAR文件格式,可以在MyEclipse.Eclipse都可以 ...

  5. iOS-OC-基本控件之UIPageControl

    UIPageControl(页面控制器,就是桌面的那些小点点,每个点代表一个界面) 父类是 UIControl. iOS开发中常用的基本控件,主要和UIScrollView一起使用,比较常用的就是有些 ...

  6. oj Rapid Typing

    import bs4 import requests import urllib2 import time import base64 session=requests.Session() respo ...

  7. TComboBox; 指定某一行,不给下拉,只读ReadOnly 伪装 实现

    //cbb1: TComboBox; 指定某一行,不给下拉,自读伪装 实现: cbb1.Style :=csSimple; //设定style 不可以下拉 cbb1.ItemIndex := ; // ...

  8. Git Merge Commit忘了选分支?数据丢失? 刚刚做的都丢失了?别急!

    1.打开终端,进入到对应的git 目录,也就是你的项目目录. 2.然后输入 git reflog,找到自己commit的版本 3.根据对应的编码输入指令,如:git checkout e53fa44( ...

  9. Webpack 入门指迷--转载(题叶)

    最近看到这个东西,一头雾水.看了一些资料了解了Webpack概念,大体是webpack 是一个模块绑定器,主要目的是在浏览器上绑定 JavaScript 文件. 看到题叶写的一篇介绍,写的很好,转载连 ...

  10. 创建WSDL项目

    WSDL文件是测试基于soap的服务,他们定义实际暴露服务和要求SoapUI生成测试,要求信息,验证和MockServices. SoapUI支持最广泛使用的1.1版本的WSDL和SOAP 1.1和1 ...