android 基础小知识点

一本书看了很多次,还是会一直忘记,多敲了几遍,再记录下来,总不会忘记了。


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();


3活动的启动方式

standard 默认的方式,这种方式,我们new 一个活动就会创建一个活动。不会考虑说我们的返回栈中有没有这个活动。
singleTop 这个方式是当我们目前的这个活动处于返回栈的顶部的时候,我们再new 一个相同的活动的时候,则不会创建新的,而是沿用我们处于栈顶的这个活动。
singTask 这个方式是:当我们new 一个活动的时候,会检查下我们的返回栈,如果里面已经存在了这个活动,就会把这个活动上面的所有的其他的活动都干掉,那么这个活动就会处于栈顶并且会使用已经存在的这个活动。
singlestance 这个方式会弃用一个新的返回栈,意思就是我们这个APP 的活动都是在A 这个 屋子里的,用了这个方式,他会新建一个B屋子,然后进去。


猜你喜欢

转载自blog.csdn.net/a260724032/article/details/78385608