AndroidAndroid知识Android开发

没错,就是那个说了N遍的Activity

2016-12-01  本文已影响197人  卡路fly

Activity生命周期

继承Activity类时默认生成,在activity第一次被创建时候被调用,完成activity初始化。

当然在onCreate()之后被调用,这个时候你还看不到activity,在activity即将被你看见的时候,它被调用。

activity正在运行,即处于active/running的状态。
ps: onActivityResult ():You will receive this call immediately before onResume() when your activity is re-starting.

系统准备去撩别的activity的时候,当前activity马上要走了的时候被调用。在这个时候,赶紧把一些消耗CPU的资源放掉,养精蓄锐,等activity回来哟。[害羞脸]

当你已经完全看不到activity的时被调用。
请注意:是完全看不到了,如果看到一根头发丝都不会被执行,比如:弹出了一个对话框的activity。

在销毁前被调用。[忧伤.jpg]

在onStop之后,从停止状态变成运行,那么经过onRestart又回到onStart。

<br />

<br />


Activity被回收了之后

<br />

PS:
如何在屏幕旋转的时候不重新创建activity?
设置android:configChanges="orientation"

会将activity状态通过这个方法保存至Bundle对象,当然你也可以额外增加键值存入Bundle来保存这些状态。
但是,一切的前提:activity不是被用户finish的!

<br />

这个方法可以理解为恢复上面大哥临时保存的状态。
产生的Bundle对象传递到该方法以及onCreate()方法中。
发现了吗?这就是onCreate()里面的参数。

手残星人 主要看文字,啊哈哈,手残星人

<br />
<br />

<h4> Intent Flag启动 </h4>
(** 该方法优先级高于AndroidMainifest启动 **)

<br />

<br />

IntentFilter匹配规则

<br />

IntentFilter过滤信息有:action、category、data。
一个过滤列表中可以有多个。
只有同时匹配这三项才能成功启动目标Activity。
一个Activity中可以有多个过滤列表,只要匹配任何一组即可成功启动目标Activity。

<br />

<br />

2.当存在多个的时候,必须使每一个Intent中的category和过滤规则中的category完全相同,才能匹配成功。

3.当不存在时,系统在调用startActivity或startActivityForResult的时候默认为Intent加上“android.intent.category.DEFAULT”。

4 .为了使activity可以接收隐式调用,必须在intent-filter中指定“android.intent.category.DEFAULT”。

<br />

<!-- data语法  -->
<intent-filter>
    <data
        android:host="string"
        android:mimeType="string"
        android:path="string"
        android:pathPattern="string"
        android:pathPrefix="string"
        android:port="string"
        android:scheme="string" />
      ……
</intent-filter>


<!-- 也可以写成 -->
<intent-filter>
    <data   android:host="string" />
    <data   android:mimeType="string" />
     ……
</intent-filter>

data由两部分组成,mime和URI,见下图


eg:
intent.setDataAndType(Uri.parse("http://123"),"image/jpeg");



上一篇 下一篇

猜你喜欢

热点阅读