一本书看了很多次,还是会一直忘记,多敲了几遍,再记录下来,总不会忘记了。
1.Intent 的分类。
Intent 有两种类别,显式和隐式。显式是我们最常用的一种方式,
Intent in=new Intent(Content packageContent ,Class<?> cls);
startActivity(in);
第一个参数是当前上下文对象Content ,第二个是我们要跳转的 Activity ,
隐式是使用指定了Action 和category 等信息,让符合这些条件的Activity 能够得到响应。
例如:Intent in=new Intent("Intent.ACTION_WEB_SEARCH");
startActivity(in);
表明了我们想要启动能够响应“”“Intent.ACTION_WEB_SEARCH” 这个activon 的活动,那么我们如果想要响应这个action ,我们的活动则需要在AndroidManifest 这个文件中,注册相应的action 就好了。
<activity android:name="com.xjx.demo.home.BActivity"> <intent-filter> <action android:name="Intent.ACTION_WEB_SEARCH" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>用隐式intent 必须要action 和 category 都能匹配上才行,我上面虽然没有指定 category 但是startactivity 会自动将category 添加到我们的intent 中。上面我们在注册活动的时候,也使用了默认的category 。
我们在使用手机的时候,经常会打开一个文件啊,或者说一个网址啊什么的,这个时候手机就会列出一些列表,并且询问你说,你想用什么方式打开这个文件或者网址。这个其实也是使用隐式Intent 来完成的。
例如:当我们使用Intent 发送一个网页地址的时候,
Intent in=new Intent("Intent.ACTION_VIEW");
in.setData(Uri.parse("http://www.baidu.com"));
startActivity(in);
如果你想让你的activity 也可以相应这个动作,你可以在AndroidManifest 文件中的activiy 下的<intent-filter> 这个标签中再配置一个<data> 标签。
例如:
<activity android:name="com.xjx.demo.home.BActivity"> <intent-filter> <action android:name="Intent.ACTION_WEB_SEARCH" /> <category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http"> </intent-filter> </activity>
这样,你的这个活动就能相应我们发送一个网址的这个动作了
2.活动的生命周期:
启动活动-->oncreate()--> onstart()-->onResume()-->onpause()-->onstop()-->ondestory()
2.1另外,当我们启动另外一个活动的时候,另外一个活动会把我们当前的活动完全遮盖掉,这个时候,我们当前的活动就会调用onpause() -->onstop ,当我们从另外一个活动返回当前这个活动的时候,会调用onRestart() -->onstart() -->onResume()
2.2当我们在当前活动启动一个dialog ,或者 popwindow的时候,我们当前的活动会调用onpause() ,因为这些并没有完全的遮盖住我们当前的这个活动 , 返回的时候会调用 onresume();