第一章Activity的生命周期和启动模式(Android开发艺术探索)


1.1 Activity的生命周期全面分析

  • 新Activity是透明主题时,旧Activity不会走onStop;
  • Activity切换时,旧Activity的onPause会先执行,然后才会启动新的Activity;
  • Activity在异常情况下被回收时,onSaveInstanceState方法会被回调,回调时机是在onStop之前,当Activity被重新创建的时 候,onRestoreInstanceState方法会被回调,时序在onStart之后;


1.2 Acitivity的启动模式(launch Mode)

  • standard 标准 (系统默认,每次启动都会重新创建实例)
  • single Top 顶 (如果activity在栈顶,那么此activity不允许被重新创建,而是会回调onNewIntent方法)
  • single Task 栈内 (如果启动的Activity在栈中存在,那么不会被重复创建,回调onNewIntent并置启动Activity到栈顶并清楚启动的Activity上面的所有Activity;如果不存在,重新创建一个栈;)
  • single Instance单实例(系统的拨号页面,activity单独占用一个任务栈,很少用

1.3 Activity隐式启动Activity

在跳转的activity中申明(如Aactiivty--RecylerActivity)

<activity
            android:name=".RecyclerActivity"
            android:label="@string/title_activity_recycler" >
            
             <!-- 隐式调用RecyclerViewActivity -->
        <intent-filter>
            <action android:name="com.firstline.recyclerActivity.action1"/>
            <action android:name="com.firstline.recyclerActivity.action2"/>
            <!-- default category 必须指定  可以有多个action,categoty,data,-->
            <category android:name="android.intent.category.DEFAULT"/>
            <category android:name="com.firstline.recyclerActivity.category1"/>
            <category android:name="com.firstline.recyclerActivity.category2"/>
            <data android:mimeType="text/plain" android:scheme="file" android:host="abc"/>
            <data android:mimeType="image/*" android:scheme="http" android:host="www.baidu.com"/>
            <data android:mimeType="video/*"/>
            
        </intent-filter>
            
        </activity> 

Intent intent = new Intent("com.firstline.recyclerActivity.action1");
//可写可不写,但是被跳转的activity中的intent-filter必须要有  <category android:name="android.intent.category.DEFAULT"/>
intent.addCategory("com.firstline.recyclerActivity.category2");
//type必须与后面相同,scheme没有指定的情况下,默认为file:开头
 intent.setDataAndType(Uri.parse("file://abc"), "text/plain");
//type必须与后面相同,scheme没有指定的情况下,默认为file:开头
//intent.setDataAndType(Uri.parse("http://www.baidu.com"), "image/*");
startActivity(intent);


拓展:

MIME TYPE描述

多用途互联网邮件扩展MIMEMultipurpose Internet Mail Extensions)是一个互联网标准,它扩展了电子邮件标准,使其能够支持非ASCII字符、二进制格式附件等多种格式的邮件消息。

内容类型(Content-Type),这个头部领域用于指定消息的类型。一般以下面的形式出现。[type]/[subtype]

type有下面的形式。

  • Text:用于标准化地表示的文本信息,文本消息可以是多种字符集和或者多种格式的;
  • Multipart:用于连接消息体的多个部分构成一个消息,这些部分可以是不同类型的数据;
  • Application:用于传输应用程序数据或者二进制数据;
  • Message:用于包装一个E-mail消息;
  • Image:用于传输静态图片数据;
  • Audio:用于传输音频或者音声数据;
  • Video:用于传输动态影像数据,可以是与音频编辑在一起的视频数据格式。

subtype用于指定type的详细形式。content-type/subtype配对的集合和与此相关的参数,将随着时间而增长。为了确保这些值在一个有序而且公开的状态下开发,MIME使用Internet Assigned Numbers Authority (IANA)作为中心的注册机制来管理这些值。常用的subtype值如下所示:

  • text/plain(纯文本
  • text/html(HTML文档)
  • application/xhtml+xml(XHTML文档)
  • image/gif(GIF图像)
  • image/jpeg(JPEG图像)【PHP中为:image/pjpeg】
  • image/png(PNG图像)【PHP中为:image/x-png】
  • video/mpeg(MPEG动画)
  • application/octet-stream(任意的二进制数据)
  • application/pdf(PDF文档)
  • application/msword(Microsoft Word文件)
  • message/rfc822(RFC 822形式)
  • multipart/alternative(HTML邮件的HTML形式和纯文本形式,相同内容使用不同形式表示)
  • application/x-www-form-urlencoded(使用HTTP的POST方法提交的表单)
  • multipart/form-data(同上,但主要用于表单提交时伴随文件上传的场合)
---------------------------------------------------------------------------------------------------------------------------

Android中MimeType的用途
                Intent-Filter中的<data>有一个mimeType . 它的作用是告诉Android系统本Activity可以处理的文件的类型。如设置为 “text/plain”表示可以处理“.txt”文件。
MimeTypeMap类
                MimeTypeMap类是专门处理mimeType的类。


 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值