第四次课Intent隐式意图和Activity生命周期
- 格式:doc
- 大小:111.50 KB
- 文档页数:3
Activity(Activity是界面的载体,也可以理解为android应用程序的入口)●课程目标:掌握activity这个android最重要的组件的用法理解性记忆activity的生命周期:OnCreate,OnStart,OnResume,OnPause,OnStop,OnDestroy, OnRestrat;理解activity栈管理方式:先进后出熟悉使用activity与intent配合传递值的方式Activity window view之间的关系●重点难点:Activity生命周期理解性记忆●考核目标:什么是activity:Activity是Android系统中的四大组件之一,可以用于显示View。
Activity 是一个与用户交互的系统模块,几乎所有的Activity都是和用户进行交互的,但是如果这样就能说Activity主要是用来显示View就不太正确了。
请描述一下activity的生命周期Activity生命周期图Activity是什么●课程目标:Activity实际是如何实例化的?:activity通过StartActivity()这个方法实现,而StartActivity()是ContextImpl.java中的类,虚拟机系统服务控制activity启动,Activity的生命周期是如何注册和监控的?:oncreate等的生命周期是在context里定义的,activity只是进行重载@Override;ActivityMonit用于监控Activity,●重点难点:Activity与binder的关系:binder是android跨进程,是进程间通讯的基础;Android的设计activity和service托管在不同的进程,不同进程间的activity,service之间要交换数据属于IPC,Binder就是为了activity通讯而设计的一个轻量级的IPC框架。
activity 整个应用程序的启动过程:一:Launcher通过Binder进程间通信机制通知ActivityManagerService,它要启动一个Activity;二:ActivityManagerService通过Binder进程间通信机制通知Launcher进入Paused状态;三:Launcher通过Binder进程间通信机制通知ActivityManagerService,它已经准备就绪进入Paused状态,于是ActivityManagerService就创建一个新的进程,用来启动一个ActivityThread实例,即将要启动的Activity就是在这个ActivityThread实例中运行;四:ActivityThread通过Binder进程间通信机制将一个ApplicationThread类型的Binder 对象传递给ActivityManagerService,以便以后ActivityManagerService能够通过这个Binder对象和它进行通信;五:ActivityManagerService通过Binder进程间通信机制通知ActivityThread,现在一切准备就绪,它可以真正执行Activity的启动操作了●考核目标:Activity跟binder的关系是什么?Context(上下文)Context既是环境变量,又像Win32的句柄handle,但又确实是上下文??Activity window view之间的关系●课程目标:Activity window view之间的关系:Activity的内部实现,实际上是聚合了一个Window对象,当我们调用Activity的setContentView方法的时候,实际上是调用的Window对象的setContentView方法,所以我们可以看出Activity中关于界面的绘制是交给Window对象来做的。
常见Android⾯试题及答案(详细整理)1. 请描述⼀下Activity ⽣命周期。
答: 如下图所⽰。
共有七个周期函数,按顺序分别是: onCreate(), onStart(), onRestart(), onResume(), onPause(),onStop(), onDestroy()。
onCreate(): 创建Activity时调⽤,设置在该⽅法中,还以Bundle的形式提供对以前存储的任何状态的访问。
onStart(): Activity变为在屏幕上对⽤户可见时调⽤。
onResume(): Activity开始与⽤户交互时调⽤(⽆论是启动还是重新启动⼀个活动,该⽅法总是被调⽤。
onPause(): Activity被暂停或收回cpu和其他资源时调⽤,该⽅法⽤户保护活动状态的,也是保护现场。
onStop(): Activity被停⽌并转为不可见阶段及后续的⽣命周期事件时调⽤。
onRestart(): Activity被重新启动时调⽤。
该活动仍然在栈中,⽽不是启动新的Activity。
1、完整⽣命周期: 即从⼀个Activity从出现到消失,对应的周期⽅法是从onCreate()到onDestroy()。
2、可见⽣命周期: 当Activity处于可以⽤户看见的状态,但不⼀定能与⽤户交互时,将多次执⾏从onStart()到onStop()。
3、前景⽣命周期: 当Activity处于Activity栈最顶端,能够与其他⽤户进⾏交互时,将多次执⾏从onResume()到onPause()。
2. 两个Activity之间跳转时必然会执⾏的是哪⼏个⽅法。
答: 两个Activity之间跳转必然会执⾏的是下⾯⼏个⽅法。
onCreate()//在Activity⽣命周期开始时调⽤。
onRestoreInstanceState()//⽤来恢复UI状态。
onRestart()//当Activity重新启动时调⽤。
显式意图和隐式意图总结package com.example.wang.myapplication;import ponentName;import android.content.Intent;import .Uri;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.test_linearlayout);}//显式意图⽅法1public void b1_OnClick(View v){Intent intent=new Intent(this,TestActivity1.class);startActivity(intent);}//显式意图⽅法2public void b2_OnClick(View v){Intent intent=new Intent();ComponentName componentName=new ComponentName(this,TestActivity1.class);intent.setComponent(componentName);startActivity(intent);}//意图传递信息,1-发送信息,在TestActivity中 2-接收数据public void b3_OnClick(View v){Intent intent=new Intent(this,TestActivity1.class);intent.putExtra("name","意图传递的值");intent.putExtra("name1", "意图传递的值1");startActivity(intent);}//隐式意图⽅式1,调⽤系统⾃⾝的public void b4_OnClick(View v){Intent intent=new Intent(Intent.ACTION_DIAL);startActivity(intent);}//隐式意图⽅式1.1,原理同⽅式1,调⽤系统⾃⾝的//在Intent.java中 public static final String ACTION_DIAL = "android.intent.action.DIAL"public void b41_OnClick(View v){Intent intent=new Intent("android.intent.action.DIAL");startActivity(intent);}//隐式意图⽅式2,⽅式1的演变public void b5_OnClick(View v){Intent intent=new Intent();//intent.setAction("android.intent.action.DIAL")和intent.setAction(Intent.ACTION_DIAL)⼀样//intent.setAction("android.intent.action.DIAL");intent.setAction(Intent.ACTION_DIAL);startActivity(intent);}//隐式意图⽤date属性实现直接拨打电话功能//注意事项:当牵扯到费⽤问题的需要在功能清单⽂件中声明⼀下,//⽤<uses-permission android:name="android.permission.*"/>//然后在模拟器相应的应⽤中设置权限public void b6_OnClick(View v) {Intent intent = new Intent(Intent.ACTION_CALL);Uri uri = Uri.parse("tel:110");intent.setData(uri);try {startActivity(intent);} catch (Exception e) {e.printStackTrace();}}//Category属性实现打开桌⾯public void b7_OnClick(View v){//⽅式1Intent intent=new Intent(Intent.ACTION_MAIN);//有Category语句可以直接打开桌⾯,如果没有需要选择打开⽅式intent.addCategory(Intent.CATEGORY_HOME);startActivity(intent);}//隐式意图打开Activity//隐式意图利⽤功能清单⽂件中action名打开Activity,action名是⾃⼰定义的//情况1:action名独⼀⽆⼆时,直接打开//情况2:功能清单⽂件中action名重名的情况,TestActivity1和TestActivity2中action名⼀样, // 此时会提⽰选择哪⼀个// 同时Category的name必须有并且是"android.intent.category.DEFAULT"public void b8_OnClick(View v){Intent intent=new Intent("android.MAIN1");startActivity(intent);}//为解决action重名可以在功能清单⽂件⾥添加Category,数量不限// 同时Category的name必须有并且是"android.intent.category.DEFAULT"public void b9_OnClick(View v){Intent intent=new Intent("android.MAIN1");intent.addCategory("android.MAIN1");startActivity(intent);}}MainActivitypackage com.example.wang.myapplication;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.util.Log;import android.widget.EditText;public class TestActivity1 extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.test_relativelayout);//练习findViewById()⽅法EditText editText=(EditText)findViewById(R.id.t2);editText.setHint("Subject");//意图传递信息,2-接收数据,在MainActivity中 1-发送信息Intent intent=getIntent();String strname=intent.getStringExtra("name");String strname1=intent.getStringExtra("name1");Log.e("TAG","意图传递的值="+strname);Log.e("TAG","意图传递的值1="+strname1);}}TestActivity1package com.example.wang.myapplication;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.util.Log;import android.widget.EditText;public class TestActivity2 extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.test_relativelayout);//练习findViewById()⽅法EditText editText=(EditText)findViewById(R.id.t2);editText.setHint("测试2");//意图传递信息,2-接收数据,在MainActivity中 1-发送信息Intent intent=getIntent();String strname=intent.getStringExtra("name");String strname1=intent.getStringExtra("name1");Log.e("TAG","意图传递的值="+strname);Log.e("TAG","意图传递的值1="+strname1);}}TestActivity2<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="/apk/res/android"package="com.example.wang.myapplication"><uses-permission android:name="android.permission.CALL_PHONE"/> <applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/AppTheme"><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN"/><category android:name="UNCHER"/></intent-filter></activity><activity android:name=".TestActivity1"><intent-filter><action android:name="android.MAIN1"/><category android:name="android.intent.category.DEFAULT"/></intent-filter></activity><activity android:name=".TestActivity2"><intent-filter><action android:name="android.MAIN1"/><category android:name="android.intent.category.DEFAULT"/><category android:name="android.MAIN1"/></intent-filter></activity></application></manifest>功能清单⽂件<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android" android:orientation="vertical" android:layout_width="match_parent"android:layout_height="match_parent"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="显式意图⽅式1"android:id="@+id/b1_button"android:onClick="b1_OnClick"android:layout_weight="1"/><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="显式意图⽅式2"android:onClick="b2_OnClick"android:layout_weight="1"/></LinearLayout><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="意图携带数据"android:onClick="b3_OnClick"/><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="隐式意图形式1"android:onClick="b4_OnClick"android:layout_weight="1"/><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="隐式意图形式1.1"android:onClick="b41_OnClick"android:layout_weight="1"/><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="隐式意图形式2"android:onClick="b5_OnClick"android:layout_weight="1"/></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="隐式意图⽤date属性实现直接拨打电话功能"android:onClick="b6_OnClick"android:layout_weight="1"/><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="Category属性实现打开桌⾯"android:onClick="b7_OnClick"android:layout_weight="1"/></LinearLayout><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="隐式意图利⽤功能清单⽂件中action名打开Activity"android:onClick="b8_OnClick"/><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="为解决action重名可以添加Category"android:onClick="b9_OnClick"/></LinearLayout>test_linearlayout<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="/apk/res/android" android:layout_width="match_parent"android:layout_height="match_parent"><EditTextandroid:layout_width="match_parent"android:layout_height="wrap_content"android:hint="To"android:id="@+id/t1"/><EditTextandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@id/t1"android:hint="To"android:id="@+id/t2"/><EditTextandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@id/t2"android:hint="Message"android:id="@+id/t3"android:layout_above="@+id/t4"android:gravity="top"/><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/t4"android:layout_alignParentBottom="true"><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Close"android:layout_weight="1"/><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Resent"android:layout_weight="1"/></LinearLayout></RelativeLayout>test_relativelayout。
解释intent的两种类型举例说明用途Intent是Android开发中用于进行组件间通信的一种机制。
它用于在不同的组件之间传递消息,并指示应用程序在某个特定情况下执行特定的操作。
Intent有两种类型:显式Intent和隐式Intent。
1.显式Intent:显式Intent明确指定了要启动的组件的名称,它的目的是启动应用程序中的特定组件(如活动、服务或广播接收器)。
显式Intent是通过给Intent构造函数提供组件的完整类名来创建的。
举例说明用途:假设我们正在编写一个应用程序,它有多个活动,并且需要从一个活动跳转到另一个活动。
我们可以使用显式Intent来实现这个功能。
例如,我们可以在按钮的点击事件处理程序中创建一个显式Intent来启动另一个活动:```java//当按钮被点击时执行此方法public void onButtonClick(View view) {Intent intent = new Intent(this, SecondActivity.class);startActivity(intent);}```在上面的示例中,我们创建了一个显式Intent,并指定了要启动的活动是SecondActivity。
当按钮被点击时,会启动SecondActivity。
2.隐式Intent:隐式Intent没有直接指定要启动的组件的名称,而是通过指定一个操作,一个数据类型或一个类别来描述要执行的动作。
Android系统通过Intent的内容来选择适合执行特定动作的组件。
举例说明用途:假设我们正在开发一个文件管理器应用程序,我们希望在用户点击文件时能够打开适当的应用程序来处理该文件。
我们可以使用隐式Intent来实现这个功能。
例如,我们可以创建一个隐式Intent来打开文本文件:```java//当文本文件被点击时执行此方法public void onFileClick(File file) {Uri uri = Uri.fromFile(file);Intent intent = new Intent(Intent.ACTION_VIEW);intent.setDataAndType(uri, "text/plain");startActivity(intent);}```在上面的示例中,我们创建了一个隐式Intent,并指定了要打开的操作是ACTION_VIEW,数据类型是text/plain。
intent底层原理Intent的底层原理是基于Android的一种通信机制,用于在不同的组件之间传递数据。
Intent本质上是一个信息包装器,实现了跨组件的通信。
在Android中,组件之间的通信需要通过Intent来完成。
Intent可以用于启动Activity、Service和BroadcastReceiver,也可以用于在组件之间传递数据。
Intent有两种类型:显式Intent和隐式Intent。
显式Intent用于指定要启动的组件的类名,而隐式Intent通过指定一组动作和数据来查找合适的组件。
实现Intent的底层机制主要包括以下几个方面:1. Intent的创建和传递:开发者可以通过构造函数创建Intent对象,并通过putExtra()方法传递数据。
Intent的传递可以通过startActivity()、startService()和sendBroadcast()等方法来实现。
2. Intent的解析和匹配:当接收到Intent时,系统会解析Intent的内容,并根据Intent的类型和数据,查找匹配的组件。
对于隐式Intent,系统会根据Intent 的动作和数据进行匹配。
3. 组件的启动和接收:当找到匹配的组件后,系统会启动该组件,并调用其相应的生命周期方法或回调方法,以完成业务逻辑的处理。
4. 数据的传递和处理:在组件之间传递数据时,可以使用Intent的extras来携带数据。
接收组件可以通过getXXXExtra()方法获取对应类型的数据。
总的来说,Intent的底层原理是通过构造Intent对象、传递Intent、解析匹配Intent、启动接收组件、传递和处理数据等步骤来实现Android组件之间的通信。
intent的使用-回复什么是intent?在计算机科学中,intent是指一个用于进行用户交互的抽象概念。
它被用于描述用户在使用应用程序或系统时所表达的意图或动作。
意图通常以文本或语音的形式表达,用于告知计算机用户的需求,从而激活相应的功能或服务。
Intent经常用于移动应用程序开发中,并在Android操作系统中得到广泛应用。
Android的Intent是一种用于在各个组件(如Activity、Service、Broadcast Receiver)之间进行通信的机制。
它可以用于启动新的活动、启动服务、发送广播等操作。
通过Intent,Android系统可以根据接收到的意图来决定采取哪些操作,以满足用户的需求。
Intent主要有两种类型:显式Intent和隐式Intent。
显式Intent用于明确地指定要启动的组件,而隐式Intent则是通过指定操作、数据和类别等信息,让系统自动匹配合适的组件来处理意图。
使用Intent的好处是,它可以将应用程序之间的交互解耦,使开发者能够以一种模块化的方式设计和组织应用程序。
同时,Intent还提供了灵活性和扩展性,因为它可以在运行时动态地将组件连接起来,并且可以在不同应用程序之间进行通信。
在开发过程中,我们可以通过Intent来实现一系列功能。
首先,我们可以使用Intent来启动一个新的活动。
对于Android应用程序而言,活动(Activity)是用户界面的一个组成部分。
通过Intent,我们可以告知系统要启动的具体活动,并传递必要的数据和参数。
其次,我们可以使用Intent来启动服务(Service)。
服务是一种在后台运行的组件,它用于执行长时间运行的任务,如网络操作、文件处理等。
通过Intent,我们可以指定要启动的服务组件,并传递必要的参数。
除了启动活动和服务外,Intent还可以用于发送广播(Broadcast)。
广播是一种系统级的通信机制,用于在应用程序之间或系统组件之间传递消息。
Android 开发之路——四大核心组件1 Activity(1)生命周期2014/10/19 0 今天我们来一起学习一下关于Android 四大核心组件之一的Activity,从字面上理解就是活动的意思。
没错,它就是用来和用户互动用的,通常一个Activity 就相当于一个新的屏幕,你可以通过在其上面加一些组件,来实现一些功能。
当然也可以监听用户的事件并作出响应。
学习Activity 最重要的就是其四种状态和七个生命周期:先说说四种状态:1.Activity/Running :当一个新的Activity 入栈时,它会位于屏幕的最前端,在内存中也是栈顶的位置,此时它处于可以处理事件、监听用户事件的激活状态;2.Pasued :当一个Activity 失去焦点,一个新的非全屏的Activity 或者一个透明的Activity 被放置在栈顶。
但原Activity 与窗口管理器依然保持着联系,Activity 依然保持活力(保持所有的状态,成员信息,和窗口管理器保持连接),但是在内存空间极端缺乏的情况下会被关闭。
由于失去了焦点,故不能与用户进行互动;3.Stoped :当一个Activity 被一个Activity 完全覆盖时,进入”停止状态“。
但它保持着所有通信和成员信息,当内存需要被用到其他地方时,会被强行关闭;4.Killed :如果一个Activity 是Paused 或者Stopped 状态,系统可以将该Activity从内存中删除,Android 系统采用两种方式进行删除,要么要求该Activity 结束,要么直接终止它的进程。
当该Activity 再次显示给用户时,它必须重新开始和重置前面的状态。
也许看了上面的你觉得有些情况还是不清楚,没问题,那么我们就来看一下它的七个生命周期:其中onCreate(),onStart(),onResume(),onPause(),onStop(),onDestroy(),onRestart()就是七个生命周期。
●Intent是一种运行时绑定(runtime binding)机制,它能在程序运行的过程中连接两个不同的组件。
通过Intent,你的程序可以向Android表达某种请求或者意愿,Android会根据意愿的内容选择适当的组件来请求。
●在这些组件之间的通讯中,主要有Intent协助完成的。
Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将Intent传递给调用的组件,并完成组件的调用。
●因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。
●Android基本的设计理念是鼓励减少组件间的耦合,因此Android提供了Intent(意图),Intent提供了一种通用的消息系统,它允许在你的应用程序与其他应用程序间传递Intent来执行动作和产生事件。
使用Intent可以激活Android应用的三个核心组件:Activity、Service、BroadcastReceiver。
●对于明确指出了目标组件名称的Intent,我们称之为“显式Intent”对于没有明确指出目标组件名称的Intent,则称之为“隐式Intent”。
●Android系统使用Intent Filter 来过滤掉与Intent Filter内容不符的隐式Intent,一个没有声明Intent Filter的组件只能响应指明自己名字的显式Intent请求,而无法响应隐式Intent请求。
如果声明了则两者都可响应。
●在通过和intent-filter比较来解析Intent请求时,Android将以下三个因素作为选择的参考标准。
(Action、Data、Category)●应用程序的组件可以声明一个甚至多个intent-filter。
●隐式Intent和IntentFilter进行比较式的三要素是Intent的动作、数据以及类别。
第四次课 Intent隐式意图和Activity生命周期
内容:
1. 意图
2. Activity生命周期
一、意图
Intent激活组件和携带数据,可以激活Activity、Service、Broadcast三类组件。可以分成:
显示意图,隐式意图两类
隐式启动,
1. 显示意图
明确制定了要激活的是哪个组件
2. 隐式意图
没有明确指定要激活的组件名称,Android系统根据Intent的动作action、类别category
和数据data(uri和数据类型)找到最适合的组件来处理这个意图。匹配的Activity可以是
应用程序本身的,也可以是Android系统内置的,还可以是第三方应用程序提供的。
1)注册Intent过滤器
在AndroidManifest.xml文件的各个组件的节点下定义
标签 属性 说明
指定组件所能响应的动作,用字符串
表示,通常使用Java类名和包的完全
限定名构成
指定以何种方式去服务Intent请求的
动作
Android:host
指定一个有效的主机名
android:mimetype
指定组件能处理的数据类型
android:path
有效的URI路径名
android:port
主机的有效端口号
android:scheme
所需要的特定的协议
性常量,来标示一套标准动作。
动作 说明
ACTION_ANSWER
打开接听电话的Activity,默认为Android内置的拨号盘界面
ACTION_CALL
打开拨号盘界面并拨打电话,使用Uri中的数字部分作为电话号
码
ACTION_DELETE
打开一个Activity,对所提供的数据进行删除操作
ACTION_DIAL
打开内置拨号盘界面,显示Uri中提供的电话号码
ACTION_EDIT
打开一个Activity,对所提供的数据进行编辑操作
ACTION_INSERT
打开一个Activity,在提供数据的当前位置插入新项
ACTION_PICK
启动一个子Activity,从提供的数据列表中选取一项
系统提供的类别
值 说明
ALTERNATIVE
Intent数据默认动作的一个可替换的执行方法
SELECTED_ALTERNATIVE
和ALTERNATIVE类似,但替换的执行方法不是指定
的,而是被解析出来的
BROWSABLE
声明Activity可以由浏览器启动
DEFAULT
为Intent过滤器中定义的数据提供默认动作
HOME
设备启动后显示的第一个Activity
LAUNCHER
在应用程序启动时首先被显示
Intent解析:可以在所有的组件中,找到一个可以与请求的Intent达成最佳匹配的Intent过
滤器
Intent解析的匹配规则
Android系统把所有应用程序包中的Intent过滤器集合在一起,形成一个完整的Intent
过滤器列表
在Intent与Intent过滤器进行匹配时,Android系统会将列表中所有Intent过滤器的“动
作”和“类别”与Intent进行匹配,任何不匹配的Intent过滤器都将被过滤掉。没有指定“动
作”的Intent过滤器可以匹配任何的Intent,但是没有指定“类别”的Intent过滤器只能匹
配没有“类别”的Intent
把Intent数据Uri的每个子部与Intent过滤器的标签中的属性进行匹配,如果
标签指定了协议、主机名、路径名或MIME类型,那么这些属性都要与Intent
的Uri数据部分进行匹配,任何不匹配的Intent过滤器均被过滤掉
如果Intent过滤器的匹配结果多于一个,则可以根据在
级标签来对Intent过滤器进行排序,优先级最高的Intent过滤器将被选择
实例Intent
二、Activity生命周期
Activity有三个状态:
运行状态:屏幕最前端
暂停状态:最上方有一个Activity,而下方的Activity还能看见。
停止状态:当前Activity看不见了,被上方的Activity遮住。
当Activity从一种状态转变到另一种状态时,会调用以下保护方法来通知这种变化:
void onCreate(Bundle savedInstanceState)
void onStart()
void onRestart()
void onResume()
ACTION_SEARCH
启动一个Activity,执行搜索动作
ACTION_SENDTO
启动一个Activity,向数据提供的联系人发送信息
ACTION_SEND
启动一个可以发送数据的Activity
ACTION_VIEW
最常用的动作,对以Uri方式传送的数据,根据Uri协议部分以最
佳方式启动相应的Activity进行处理。对于http:address将打开浏
览器查看;对于tel:address将打开拨号呼叫指定的电话号码
ACTION_WEB_SEARCH
打开一个Activity,对提供的数据进行Web搜索
void onPause() 适合保存最终数据
void onStop()
void onDestroy() 当键盘隐藏或者手机屏幕方向改变都会调用该方法。
Activity生命周期
实例演示ActivityLife