android Activity启动模式-程序员宅基地

Activity的启动模式有两种:一种是在AndroidManifest.xml文件中,配置launchMode属性,还有一种是设置intent的flag的方式来启动

1、设置android:launchMode属性

    可以分为四种:standard、singleTop、singleTask、singleInstance

    standard:默认值。系统不考虑此Activity的实例是否已经在Back Stack中存在。每次创建都会启动一个新的Activity

    singleTop:启动时,栈顶刚好就是目标Activity,则调用此Activity的onNewIntent()即可。如果不是,则创建新的Activity实例

    singleTask:整个应用程序的上下文只有一个实例。当启动此类Activity的时候,系统会从Back Stack中检查是否已经存在此Activity的实例。            如果存在,会直接使用,并将此实例之上的Activity出栈,依然会毁掉onNewIntent().如果没有就会创建一个新的实例。

    singleInstance:此Activity独享一个Back Stack。主要用于程序之间的数据共享。

    下面以例子来解释:

    具体的代码的设定模式如下:

        <activity
            android:name=".launchmodeTest.StandardAActivity"
            android:label="A">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".launchmodeTest.SingleTopActivity" android:launchMode="singleTop" android:label="栈顶复用"/>
        <activity android:name=".launchmodeTest.SingleTaskActivity" android:launchMode="singleTask" android:label="栈内复用"/>
        <activity android:name=".launchmodeTest.SingleInstanceActivity" android:launchMode="singleInstance" android:label="单独的一个栈"/>
        <activity android:name=".launchmodeTest.StandardCActivity" android:label="C"></activity>

   1.1 singleTop 栈顶复用:

            1.1.1 启动步骤为:StandardAActivity-->SingleTopActivity-->StandardCActivity-->SingleTopActivity

                执行adb shell dumpsys activity命令,在堆栈中的代码为(截取了其中一部分):

  Running activities (most recent first):
    TaskRecord{528b8768 #5 A base.example.com U 0}
      Run #4: ActivityRecord{528ddc64 u0 base.example.com/.launchmodeTest.SingleTopActivity}
      Run #3: ActivityRecord{52897c50 u0 base.example.com/.launchmodeTest.StandardCActivity}
      Run #2: ActivityRecord{5288e658 u0 base.example.com/.launchmodeTest.SingleTopActivity}
      Run #1: ActivityRecord{527919fc u0 base.example.com/.launchmodeTest.StandardAActivity}
    TaskRecord{528c8b7c #2 A com.android.launcher U 0}
      Run #0: ActivityRecord{528aca90 u0 com.android.launcher/com.android.launcher2.Launcher}

         分析说明:

                a、其中有两个堆栈:

                    前台堆栈:TaskRecord{528d7cd8 #6 A base.example.com U 0}

                    后台堆栈:TaskRecord{528c8b7c #2 A com.android.launcher U 0}

                b、桌面:Run #0: ActivityRecord{528aca90 u0 com.android.launcher/com.android.launcher2.Launcher}

        1.1.2 启动步骤为:StandardAActivity-->SingleTopActivity-->SingleTopActivity

                执行adb shell dumpsys activity命令,在堆栈中的代码为(截取了其中一部分):

  Running activities (most recent first):
    TaskRecord{528d7cd8 #6 A base.example.com U 0}
      Run #2: ActivityRecord{527919fc u0 base.example.com/.launchmodeTest.SingleTopActivity}
      Run #1: ActivityRecord{528b78c0 u0 base.example.com/.launchmodeTest.StandardAActivity}
    TaskRecord{528c8b7c #2 A com.android.launcher U 0}
      Run #0: ActivityRecord{528aca90 u0 com.android.launcher/com.android.launcher2.Launcher}

                可以看到,SingleTopActivity两次启动,但是只有一个实例。

                其中,生命周期为

11-28 03:22:01.499 1831-1831/base.example.com I/SingleTopActivity: onPause: 
11-28 03:22:01.499 1831-1831/base.example.com I/SingleTopActivity: onNewIntent: 
11-28 03:22:01.499 1831-1831/base.example.com I/SingleTopActivity: onResume: 

            1.2  singleTask 栈内复用

                   启动步骤为:StandardAActivity-->SingleTaskActivity-->StandardCActivity   

                   堆栈为:

    Running activities (most recent first):
    TaskRecord{528764c0 #8 A base.example.com U 0}
      Run #3: ActivityRecord{5289a4a0 u0 base.example.com/.launchmodeTest.StandardCActivity}
      Run #2: ActivityRecord{52889940 u0 base.example.com/.launchmodeTest.SingleTaskActivity}
      Run #1: ActivityRecord{527919fc u0 base.example.com/.launchmodeTest.StandardAActivity}
    TaskRecord{528c8b7c #2 A com.android.launcher U 0}
      Run #0: ActivityRecord{528aca90 u0 com.android.launcher/com.android.launcher2.Launcher}

                   再启动SingleTaskActivity

                   堆栈为: 

  Running activities (most recent first):
    TaskRecord{528764c0 #8 A base.example.com U 0}
      Run #2: ActivityRecord{52889940 u0 base.example.com/.launchmodeTest.SingleTaskActivity}
      Run #1: ActivityRecord{527919fc u0 base.example.com/.launchmodeTest.StandardAActivity}
    TaskRecord{528c8b7c #2 A com.android.launcher U 0}
      Run #0: ActivityRecord{528aca90 u0 com.android.launcher/com.android.launcher2.Launcher}

            可见,其中StandardCActivity被从堆栈中移除,其生命周期为:

11-28 04:13:09.295 2163-2163/base.example.com I/StandardCActivity: onPause: 
11-28 04:13:09.311 2163-2163/base.example.com I/SingleTaskActivity: onNewIntent: 
11-28 04:13:09.311 2163-2163/base.example.com I/SingleTaskActivity: onStart: 
11-28 04:13:09.311 2163-2163/base.example.com I/SingleTaskActivity: onResume: 
11-28 04:13:09.343 2163-2163/base.example.com W/EGL_genymotion: eglSurfaceAttrib not implemented
11-28 04:13:09.719 2163-2163/base.example.com I/StandardCActivity: onStop: 
11-28 04:13:09.719 2163-2163/base.example.com I/StandardCActivity: onDestroy: 

        可见,直接将SingleTaskActivity上面的StandardCActivity移除,并调用了自己的onNewIntent()方法StandardCActivity自己走了自己的destroy流程。(栈内复用)

            1.2.1 使用taskAffinity属性

                    taskAffinity属性可以翻译为任务相关性,主要表示的是此Activity的进程名字(默认进程是包名)。其中的值必须为字符串,并且包含“.”

                    例如如下定义:

<activity android:name=".launchmodeTest.SingleTaskWithAffinityActivity"
            android:launchMode="singleTask" android:taskAffinity="com.cxy.test"></activity>

                    启动后的栈为:StandardAActivity-->SingleTaskWithAffinityActivity

  Running activities (most recent first):
    TaskRecord{528e7e2c #12 A com.cxy.test U 0}
      Run #2: ActivityRecord{527919fc u0 base.example.com/.launchmodeTest.SingleTaskWithAffinityActivity}
    TaskRecord{528c7a48 #11 A base.example.com U 0}
      Run #1: ActivityRecord{5276bcd4 u0 base.example.com/.launchmodeTest.StandardAActivity}
    TaskRecord{528c8b7c #2 A com.android.launcher U 0}
      Run #0: ActivityRecord{528aca90 u0 com.android.launcher/com.android.launcher2.Launcher}

                    再启动一个standard模式的Activity:StandardAActivity-->SingleTaskWithAffinityActivity-->StandardCActivity

  Running activities (most recent first):
    TaskRecord{528e7e2c #12 A com.cxy.test U 0}
      Run #3: ActivityRecord{52889940 u0 base.example.com/.launchmodeTest.StandardCActivity}
      Run #2: ActivityRecord{527919fc u0 base.example.com/.launchmodeTest.SingleTaskWithAffinityActivity}
    TaskRecord{528c7a48 #11 A base.example.com U 0}
      Run #1: ActivityRecord{5276bcd4 u0 base.example.com/.launchmodeTest.StandardAActivity}
    TaskRecord{528c8b7c #2 A com.android.launcher U 0}
      Run #0: ActivityRecord{528aca90 u0 com.android.launcher/com.android.launcher2.Launcher}

                               可以查看出来,谁启动的Activity,就会在谁的栈中添加对应的Activity。除非被启动的Activity已经制定了进程名。

                    再次启动SingleTaskWithAffinityActivity:StandardAActivity-->SingleTaskWithAffinityActivity-->SingleTaskWithAffinityActivity

  Running activities (most recent first):
    TaskRecord{528e7e2c #12 A com.cxy.test U 0}
      Run #2: ActivityRecord{527919fc u0 base.example.com/.launchmodeTest.SingleTaskWithAffinityActivity}
    TaskRecord{528c7a48 #11 A base.example.com U 0}
      Run #1: ActivityRecord{5276bcd4 u0 base.example.com/.launchmodeTest.StandardAActivity}
    TaskRecord{528c8b7c #2 A com.android.launcher U 0}
      Run #0: ActivityRecord{528aca90 u0 com.android.launcher/com.android.launcher2.Launcher}

                    生命周期:

11-28 04:37:02.595 2411-2411/base.example.com I/StandardCActivity: onPause: 
11-28 04:37:02.607 2411-2411/base.example.com I/SingleTaskWithAffinityA: onNewIntent: 
11-28 04:37:02.607 2411-2411/base.example.com I/SingleTaskWithAffinityA: onStart: 
11-28 04:37:02.611 2411-2411/base.example.com I/SingleTaskWithAffinityA: onResume: 
11-28 04:37:02.647 2411-2411/base.example.com W/EGL_genymotion: eglSurfaceAttrib not implemented
11-28 04:37:03.019 2411-2411/base.example.com I/StandardCActivity: onStop: 
11-28 04:37:03.019 2411-2411/base.example.com I/StandardCActivity: onDestroy: 

                                可见调用了SingleTaskWithAffinityActivity的onNewIntent()、onStart()、onResume()方法。并将StandardCActivity从堆栈中移除了。

                    再次启动SingleTaskActivity:StandardAActivity-->SingleTaskWithAffinityActivity-->StandardCActivity-->SingleTaskActivity

  Running activities (most recent first):
    TaskRecord{528321b0 #13 A base.example.com U 0}
      Run #4: ActivityRecord{5292dca8 u0 base.example.com/.launchmodeTest.SingleTaskActivity}
    TaskRecord{5288a210 #14 A com.cxy.test U 0}
      Run #3: ActivityRecord{528ddc64 u0 base.example.com/.launchmodeTest.StandardCActivity}
      Run #2: ActivityRecord{5288e658 u0 base.example.com/.launchmodeTest.SingleTaskWithAffinityActivity}
    TaskRecord{528321b0 #13 A base.example.com U 0}
      Run #1: ActivityRecord{52889940 u0 base.example.com/.launchmodeTest.StandardAActivity}
    TaskRecord{528c8b7c #2 A com.android.launcher U 0}
      Run #0: ActivityRecord{528aca90 u0 com.android.launcher/com.android.launcher2.Launcher}

                                可见设置了singleTask模式的activity,会在原来的堆栈中。

                    假设给standard模式的activity设置taskAffinity属性

        <activity
            android:name=".launchmodeTest.StandardCActivity"
            android:label="C"
            android:taskAffinity="com.cxy.test.one"/>

                            启动的结果为:StandardAActivity-->SingleTaskWithAffinityActivity-->StandardCActivity

  Running activities (most recent first):
    TaskRecord{5276b448 #16 A com.cxy.test U 0}
      Run #3: ActivityRecord{5288e658 u0 base.example.com/.launchmodeTest.StandardCActivity}
      Run #2: ActivityRecord{528ddc64 u0 base.example.com/.launchmodeTest.SingleTaskWithAffinityActivity}
    TaskRecord{528d42c4 #15 A base.example.com U 0}
      Run #1: ActivityRecord{527919fc u0 base.example.com/.launchmodeTest.StandardAActivity}
    TaskRecord{528c8b7c #2 A com.android.launcher U 0}
      Run #0: ActivityRecord{528aca90 u0 com.android.launcher/com.android.launcher2.Launcher}

                            taskAffinity必须与singleTask模式使用,才会有效果。(书上说的,需要自己去验证)

        1.3  singleInstance单实例模式

               以下涉及到的activity的定义:

        <activity
            android:name=".launchmodeTest.StandardAActivity"
            android:label="A">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".launchmodeTest.SingleTopActivity"
            android:label="栈顶复用"
            android:launchMode="singleTop" />
        <activity
            android:name=".launchmodeTest.SingleTaskActivity"
            android:label="栈内复用"
            android:launchMode="singleTask" />
        <activity
            android:name=".launchmodeTest.SingleInstanceActivity"
            android:label="单独的一个栈"
            android:launchMode="singleInstance" />
        <activity
            android:name=".launchmodeTest.StandardCActivity"
            android:label="C"/>
        <activity android:name=".launchmodeTest.SingleTaskWithAffinityActivity"
            android:launchMode="singleTask" android:taskAffinity="com.cxy.test"></activity>

               1.3.1 在普通Activity跳转到singleInstance的Activity

                            StandardAActivity-->SingleInstanceActivity

  Running activities (most recent first):
    TaskRecord{52885efc #18 A base.example.com U 0}
      Run #2: ActivityRecord{52937648 u0 base.example.com/.launchmodeTest.SingleInstanceActivity}
    TaskRecord{52897aa0 #17 A base.example.com U 0}
      Run #1: ActivityRecord{528a6334 u0 base.example.com/.launchmodeTest.StandardAActivity}
    TaskRecord{528c8b7c #2 A com.android.launcher U 0}
      Run #0: ActivityRecord{528aca90 u0 com.android.launcher/com.android.launcher2.Launcher}

                            直接新启动了一个编号为18的任务栈来单独存放,并作为前台任务栈

                        1.3.1.1 在singleInstance的Activity跳转到普通Activity

                                         StandardAActivity-->SingleInstanceActivity-->StandardCActivity

  Running activities (most recent first):
    TaskRecord{52897aa0 #17 A base.example.com U 0}
      Run #3: ActivityRecord{52905030 u0 base.example.com/.launchmodeTest.StandardCActivity}
    TaskRecord{52885efc #18 A base.example.com U 0}
      Run #2: ActivityRecord{52937648 u0 base.example.com/.launchmodeTest.SingleInstanceActivity}
    TaskRecord{52897aa0 #17 A base.example.com U 0}
      Run #1: ActivityRecord{528a6334 u0 base.example.com/.launchmodeTest.StandardAActivity}
    TaskRecord{528c8b7c #2 A com.android.launcher U 0}
      Run #0: ActivityRecord{528aca90 u0 com.android.launcher/com.android.launcher2.Launcher}
                        1.3.1.2 点击返回按钮
  Running activities (most recent first):
    TaskRecord{52897aa0 #17 A base.example.com U 0}
      Run #2: ActivityRecord{528a6334 u0 base.example.com/.launchmodeTest.StandardAActivity}
    TaskRecord{52885efc #18 A base.example.com U 0}
      Run #1: ActivityRecord{52937648 u0 base.example.com/.launchmodeTest.SingleInstanceActivity}
    TaskRecord{528c8b7c #2 A com.android.launcher U 0}
      Run #0: ActivityRecord{528aca90 u0 com.android.launcher/com.android.launcher2.Launcher}
                         1.3.1.2 点击返回按钮
  Running activities (most recent first):
    TaskRecord{52885efc #18 A base.example.com U 0}
      Run #1: ActivityRecord{52937648 u0 base.example.com/.launchmodeTest.SingleInstanceActivity}
    TaskRecord{528c8b7c #2 A com.android.launcher U 0}
      Run #0: ActivityRecord{528aca90 u0 com.android.launcher/com.android.launcher2.Launcher}

               1.3.2 在singleInstance的Activity跳转到SingleTop的Activity

                            StandardAActivity-->SingleInstanceActivity-->SingleTopActivity

  Running activities (most recent first):
    TaskRecord{528864b0 #21 A base.example.com U 0}
      Run #3: ActivityRecord{5288e658 u0 base.example.com/.launchmodeTest.SingleTopActivity}
    TaskRecord{5289313c #22 A base.example.com U 0}
      Run #2: ActivityRecord{527919fc u0 base.example.com/.launchmodeTest.SingleInstanceActivity}
    TaskRecord{528864b0 #21 A base.example.com U 0}
      Run #1: ActivityRecord{5276bcd4 u0 base.example.com/.launchmodeTest.StandardAActivity}
    TaskRecord{528c8b7c #2 A com.android.launcher U 0}
      Run #0: ActivityRecord{528aca90 u0 com.android.launcher/com.android.launcher2.Launcher}

               1.3.3 在singleInstance的Activity跳转到SingleTask的Activity

                            StandardAActivity-->SingleInstanceActivity-->SingleTaskActivity

  Running activities (most recent first):
    TaskRecord{52863e64 #23 A base.example.com U 0}
      Run #3: ActivityRecord{528acda4 u0 base.example.com/.launchmodeTest.SingleTaskActivity}
    TaskRecord{52830620 #24 A base.example.com U 0}
      Run #2: ActivityRecord{528aaa88 u0 base.example.com/.launchmodeTest.SingleInstanceActivity}
    TaskRecord{52863e64 #23 A base.example.com U 0}
      Run #1: ActivityRecord{528aa754 u0 base.example.com/.launchmodeTest.StandardAActivity}
    TaskRecord{528c8b7c #2 A com.android.launcher U 0}
      Run #0: ActivityRecord{528aca90 u0 com.android.launcher/com.android.launcher2.Launcher}

               1.3.4 在singleInstance的Activity跳转到SingleTask+AffinityActivity

                            StandardAActivity-->SingleInstanceActivity-->SingleTaskWithAffinityActivity

  Running activities (most recent first):
    TaskRecord{528cbc48 #27 A com.cxy.test U 0}
      Run #3: ActivityRecord{5288e658 u0 base.example.com/.launchmodeTest.SingleTaskWithAffinityActivity}
    TaskRecord{52832ec8 #26 A base.example.com U 0}
      Run #2: ActivityRecord{527919fc u0 base.example.com/.launchmodeTest.SingleInstanceActivity}
    TaskRecord{528c7cc0 #25 A base.example.com U 0}
      Run #1: ActivityRecord{5276bcd4 u0 base.example.com/.launchmodeTest.StandardAActivity}
    TaskRecord{528c8b7c #2 A com.android.launcher U 0}
      Run #0: ActivityRecord{528aca90 u0 com.android.launcher/com.android.launcher2.Launcher}

               1.3.5 在singleInstance的Activity跳转到 singleInstance的Activity

                            StandardAActivity-->SingleInstanceActivity-->SingleInstanceActivity

  Running activities (most recent first):
    TaskRecord{528009a8 #29 A base.example.com U 0}
      Run #2: ActivityRecord{528acda4 u0 base.example.com/.launchmodeTest.SingleInstanceActivity}
    TaskRecord{528ac1bc #28 A base.example.com U 0}
      Run #1: ActivityRecord{528aa754 u0 base.example.com/.launchmodeTest.StandardAActivity}
    TaskRecord{528c8b7c #2 A com.android.launcher U 0}
      Run #0: ActivityRecord{528aca90 u0 com.android.launcher/com.android.launcher2.Launcher}

                            对应的生命周期为:

11-28 08:07:00.135 3369-3369/base.example.com I/SingleInstanceActivity: onPause: 
11-28 08:07:00.135 3369-3369/base.example.com I/SingleInstanceActivity: onNewIntent: 
11-28 08:07:00.135 3369-3369/base.example.com I/SingleInstanceActivity: onResume: 

                        总结:singleInstance的Activity只会单独存放在一个堆栈中。并且对此启动都不会再次创建,只会调用onNewIntent相关的生命周期方法

2、设置intent的Flag属性

    FLAG_ACTIVITY_NEW_TASK:使用一个新的task来启动Activity。通常使用在service中启动Activity
    FLAG_ACTIVITY_SINGLE_TOP:使用singleTop模式来启动Activity
    FLAG_ACTIVITY_CLEAR_TOP:使用singleTask模式来启动Activity
    FLAG_ACTIVITY_NO_HISTORY:使用此模式启动的Activity,该Activity启动完其他Activity以后,此Activity会从栈中消失

    还有一些其他的属性,需要自己去试一下。

注意:

(1)、在优先级上:以上两种启动模式,设置intent的flag属性的优先级会更高。

(2)、在限定范围上,设置android:launchMode属性这种方式,无法为Activity设定FLAG_ACTIVITY_CLEAR_TOP标志。

        设置intent的Flag属性的方式,无法指定singleInstance的方式。

(3)、非特殊情况,尽量使用设置android:launchMode属性这种方式

转载于:https://my.oschina.net/u/2253892/blog/2054714

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_34234829/article/details/92184611

智能推荐

python中文显示不出来_解决Python词云库wordcloud不显示中文的问题-程序员宅基地

文章浏览阅读2.6k次。解决Python词云库wordcloud不显示中文的问题2018-11-25背景:wordcloud是基于Python开发的词云生成库,功能强大使用简单。github地址:https://github.com/amueller/word_cloudwordcloud默认是不支持显示中文的,中文会被显示成方框。安装:安装命令:pip install wordcloud解决:经过测试发现不支持显示中文..._词云python代码无法输出文字

台式计算机cpu允许温度,玩游戏cpu温度多少正常(台式电脑夏季CPU一般温度多少)...-程序员宅基地

文章浏览阅读1.1w次。随着炎热夏季的到来,当玩游戏正爽的时候,电脑突然死机了,自动关机了,是不是有想给主机一脚的冲动呢?这个很大的原因是因为CPU温度过高导致的。很多新手玩家可能都有一个疑虑,cpu温度多少以下正常?有些说是60,有些说是70,到底多高CPU温度不会死机呢?首先我们先看看如何查看CPU的温度。下载鲁大师并安装,运行鲁大师软件,即可进入软件界面,并点击温度管理,即可看到电脑各个硬件的温度。鲁大师一般情况下..._台式机玩游戏温度多少正常

小白自学Python日记 Day2-打印打印打印!_puthon打印任务收获-程序员宅基地

文章浏览阅读243次。Day2-打印打印打印!我终于更新了!(哭腔)一、 最简单的打印最最简单的打印语句: print(“打印内容”)注意:python是全英的,符号记得是半角下面是我写的例子:然后进入power shell ,注意:你需要使用cd来进入你保存的例子的文件夹,保存时名字应该取为xxx.py我终于知道为什么文件夹取名都建议取英文了,因为进入的时候是真的很麻烦!如果你没有进入正确的文件夹..._puthon打印任务收获

Docker安装:Errors during downloading metadata for repository ‘appstream‘:_"cenerrors during download metadata for repository-程序员宅基地

文章浏览阅读1k次。centos8问题参考CentOS 8 EOL如何切换源? - 云服务器 ECS - 阿里云_"cenerrors during download metadata for repository \"appstream"

尚硅谷_谷粒学苑-微服务+全栈在线教育实战项目之旅_基于微服务的在线教育平台尚硅谷-程序员宅基地

文章浏览阅读2.7k次,点赞3次,收藏11次。SpringBoot+Maven+MabatisPlusmaven在新建springboot项目引入RELEASE版本出错maven在新建springboot项目引入RELEASE版本出错maven详解maven就是通过pom.xml中的配置,就能够从仓库获取到想要的jar包。仓库分为:本地仓库、第三方仓库(私服)、中央仓库springframework.boot:spring-boot-starter-parent:2.2.1.RELEASE’ not found若出现jar包下载不了只有两_基于微服务的在线教育平台尚硅谷

随便推点

网络学习第六天(路由器、VLAN)_路由和vlan-程序员宅基地

文章浏览阅读316次。路由的概念路由器它称之为网关设备。路由器就是用于连接不同网络的设备路由器是位于OSI模型的第三层。路由器通过路由决定数据的转发。网关的背景:当时每家计算机厂商,用于交换数据的通信程序(协议)和数据描述格式各不相同。因此,就把用于相互转换这些协议和格式的计算机称为网关。路由器与三层交换器的对比路由协议对比路由器的作用:1.路由寻址2.实现不同网络之间相连的功能3.通过路由决定数据的转发,转发策略称为 路由选择。VLAN相关技术什么是VLAN?中文名称叫:虚拟局域网。虚_路由和vlan

设置div背景颜色透明度,内部元素不透明_div设置透明度,里面的内容不透明-程序员宅基地

文章浏览阅读2.8w次,点赞6次,收藏22次。设置div背景颜色透明度,内部元素不透明:.demo{  background-color:rgba(255,255,255,0.15) } 错误方式:.demo{ background-color:#5CACEE;opacity:0.75;} 这样会导致div里面的元素内容和背景颜色一起变透明只针对谷歌浏览器的测试_div设置透明度,里面的内容不透明

Discuz!代码大全-程序员宅基地

文章浏览阅读563次。1.[ u]文字:在文字的位置可以任意加入您需要的字符,显示为下划线效果。2.[ align=center]文字:在文字的位置可以任意加入您需要的字符,center位置center表示居中,left表示居左,right表示居右。5.[ color=red]文字:输入您的颜色代码,在标签的中间插入文字可以实现文字颜色改变。6.[ SIZE=数字]文字:输入您的字体大小,在标签的中间插入文..._discuzcode 大全

iOS NSTimer定时器-程序员宅基地

文章浏览阅读2.6k次。iOS中定时器有三种,分别是NSTimer、CADisplayLink、dispatch_source,下面就分别对这三种计时器进行说明。一、NSTimerNSTimer这种定时器用的比较多,但是特别需要注意释放问题,如果处理不好很容易引起循环引用问题,造成内存泄漏。1.1 NSTimer的创建NSTimer有两种创建方法。方法一:这种方法虽然创建了NSTimer,但是定时器却没有起作用。这种方式创建的NSTimer,需要加入到NSRunLoop中,有NSRunLoop的驱动才会让定时器跑起来。_ios nstimer

Linux常用命令_ls-lmore-程序员宅基地

文章浏览阅读4.8k次,点赞17次,收藏51次。Linux的命令有几百个,对程序员来说,常用的并不多,考虑各位是初学者,先学习本章节前15个命令就可以了,其它的命令以后用到的时候再学习。1、开机 物理机服务器,按下电源开关,就像windows开机一样。 在VMware中点击“开启此虚拟机”。2、登录 启动完成后,输入用户名和密码,一般情况下,不要用root用户..._ls-lmore

MySQL基础命令_mysql -u user-程序员宅基地

文章浏览阅读4.1k次。1.登录MYSQL系统命令打开DOS命令框shengfen,以管理员的身份运行命令1:mysql -u usernae -p password命令2:mysql -u username -p password -h 需要连接的mysql主机名(localhost本地主机名)或是mysql的ip地址(默认为:127.0.0.1)-P 端口号(默认:3306端口)使用其中任意一个就OK,输入命令后DOS命令框得到mysql>就说明已经进入了mysql系统2. 查看mysql当中的._mysql -u user