Android活动小结

1.活动

显式intent

Intent(Context packageContext, Class<?> cls);

隐式intent

给活动添加响应:在AndroidManifest中给一个Activity添加intent-filter标签,并指定actioncategory 的内容。
对应Intent的另一个构造函数:

Intent(String action)//action即对应name属性
此外,Intent还有另外几个常用的构造函数
Intent(String action, Uri uri);
Intent(String action, Uri uri, Context packageContext, Class<?> cls)
URI主要是结合程序之间的数据共享ContentProvider
  • 隐式Intent的更多用法
    给Intent指定action为安卓系统内置的动作,如Intent.ACTION_VIEW
    , Intent.ACTION_DIAL 等, 接着通过Uri.parse()把一字符串解析成一个Uri对象,然后调用setData()方法将一个Uri对象传进去。
    于此对应,我们还可以在< intent-filter >标签中再配置一个< data >标签,用于更精确地指定当前活动能够响应什么类型的数据。< data >标签中主要可以配置一下内容:
android::scheme 用于指定数据的协议部分,如http
android::host 用于指定数据的主机名部分,如www.baidu.com
android::port 用于指定数据的端口部分, 一般紧随在主机名之后
android::path 用于指定主机名和端口之后的部分,如一段网址中跟在域名之后的内容
android::mimeTyoe 用于指定可以处理的数据类型,允许使用通配符的方式进行指定

返回数据给上一个活动

Activity中的startAcitivityForResult()方法接受两个参数,一个Intent,一个请求码,这个方法期望在活动销毁的时候能够返回一个结果给上一个活动。

期望返回结果的activity在finish之前构建一个Intent(仅仅用于传递数据,而没有任何指定的“意图”),把想回传的数据放进Intent然后调用setResult()回传给上一个活动。

setResult(int ResultCode, Intent intent);
//这里的ResultCode一般只是用RESULT_OK/RESULT_CANCELED

当该活动被销毁之后会回调上一个活动的onACtivityResult()方法。

void onActivityResult(int requestCode, int resulrCode, Intent data)

该方法有三个参数,第一个参数requestCode,即启动活动时传入的请求码,第二个参数resultCode,即我们返回数据时传入的处理结果,第三个参数data,即携带者返回数据的Intent。

由于在一个活动中有可能调用startActivityForResult()方法去启动很多不同的活动,每一个活动放回的数据都会回调到onActivityResult()这个方法中,所以首先要通过检查requestCode的值来判断数据来源,再通过resultCode的值来判断处理结果是否成功。

Activity的启动模式

standard

standard是活动的默认启动模式,每当启动一个新的Activity,系统不会在乎这个活动是否已经在返回栈中存在,每次启动都会创建该活动的一个新的实例。

singleTop

在启动活动时如果发现返回栈的栈顶已经是该活动,则认为可以直接使用它,不会再创建新的活动实例。

singleTask

当活动的启动模式指定为singleTask时,每次启动该活动时系统首先会在返回栈中检查是否存在该活动的实例,如果发现已经存在则直接使用该实例,并把在这个活动之上的所有活动统统出栈,如果没有发现就会创建一个新的活动实例。

singleInstance

指定为singleInstance模式的活动会启用一个新的返回栈来管理这个活动(不同程序可以共享这个活动的实例)。(这个比较复杂这里先不介绍Orz. >.<)

猜你喜欢

转载自blog.csdn.net/bkjs626/article/details/70494819