# Android中Activity四种启动模式和taskAffinity属性详解 #(4原创分享)

# AndroidActivity四种启动模式和taskAffinity属性详解 #(4原创分享)

----------影子侠开发者社区Rong

## 实例验证singleInstance的行为 ##

 

根据上面的讲解,并且参考谷歌官方文档,singleInstance的特点可以归结为以下三条:

 

1. singleInstance模式启动的Activity具有全局唯一性,即整个系统中只会存在一个这样的实例

 

1. singleInstance模式启动的Activity具有独占性,即它会独自占用一个任务,被他开启的任何activity都会运行在其他任务中(官方文档上的描述为,singleInstance模式的Activity不允许其他Activity和它共存在一个任务中)

 

1. singleInstance模式的Activity开启的其他activity,能够开启一个新任务,但不一定开启新的任务,也可能在已有的一个任务中开启

 

下面对这三个特点分别验证,所使用的示例同样为AndroidTaskTest,只不过会进行一些修改,下面列出它的清单文件:

 

    <?xml version="1.0" encoding="utf-8"?>

         <manifest xmlns:android="http://schemas.android.com/apk/res/android"

             package="com.jg.zhang.androidtasktest"

             android:versionCode="1"

             android:versionName="1.0" >

        

             <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="17" />

        

             <application android:allowBackup="true"

                 android:icon="@drawable/ic_launcher" android:label="androidtasktest">

                

                 <activity  android:name="com.jg.zhang.androidtasktest.MainActivity">

                     <intent-filter>

                         <action android:name="android.intent.action.MAIN" />

                         <category android:name="android.intent.category.LAUNCHER" />

                     </intent-filter>

                 </activity>

                

                  <activity android:name="com.jg.zhang.androidtasktest.SecondActivity"

                      android:launchMode="singleInstance">

                      <intent-filter>

                          <action android:name="com.jg.zhang.androidtasktest.ACTION_MY"/>

                          <category android:name="android.intent.category.DEFAULT"/>

                      </intent-filter>

                  </activity>

                

                  <activity android:name="com.jg.zhang.androidtasktest.ThirdActivity"/>

                 

             </application>

            

         </manifest>

 

由上面的清单文件可以知道,该应用包括三个activity,分别为MianActivitySecondActivityThirdActivity,其中SecondActivity启动模式设置为singleInstanceMianActivity可以开启SecondActivitySecondActivity可以开启ThirdActivity 并且为了可以在其他应用中开启SecondActivity,为SecondActivity设置了一个IntentFilter,这样就可以在其他应用中使用隐式Intent开启SecondActivity

 

为了更好的验证singleInstance的全局唯一性,还需要其他一个应用,对上面的AndroidTaskTest1进行一些修改即可。AndroidTaskTest1只需要一个MianActivity,在MainActivity中点击按钮会开启AndroidTaskTest应用中的SecondActivity。开启AndroidTaskTest应用中的SecondActivity的代码如下:

 

            

         /**

          * 该方法在布局中按钮的android:onClick属性中指定

          * android:onClick="launchOtherActivity"

          * @param v

          */

         public void launchOtherActivity(View v){

                   Intent intent = new Intent();

                  

                   //以下Action"com.jg.zhang.androidtasktest.ACTION_MY"

                   //AndroidTaskTest应用中SecondActivityaction

                   intent.setAction("com.jg.zhang.androidtasktest.ACTION_MY");

                  

                   startActivity(intent);

         }

### 下面开始验证第一个特点:

此文章系原创,如需转载,请注明出处影子侠开发者社区www.yingzixia.com


转载于:https://my.oschina.net/u/2312592/blog/378046

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值