zoukankan      html  css  js  c++  java
  • AndroidManifest具体解释之Application(有图更好懂)

    可以包括的标签:
    1.     <activity>
    2.     <activity-alias>
    3.     <service>
    4.     <receiver>
    5.     <provider>
    6. <uses-library>

    经常使用的属性:

    android:process

    默认情况下,Android为每一个应用程序创建一个单独的进程,全部组件执行在该进程中,这个默认进程的名字通常与该应用程序的包名同样。比方

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
            package="com.lt.mytest" >
    那么该程序默认的进程名为com.lt.mytest

    设置该属性能够使得本应用程序与其他应用程序共享同样的进程,只当这两个应用程序也共享一个拥有同样签名的UserId。

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        android:sharedUserId="android.uid.phone" >
    与其他应用程序共享的一个Linux User Id的名字。


    默认情况下,Android为每一个应用程序分配一个唯一的User Id。

    然而。假设有多个应用程序都将该属性设置为一个同样的值,那么它们将共享同样的Id。

    假设这些应用程序再被设置成执行在一个同样的进程,它们便能够彼此訪问对方的数据。

    android:allowbackup
    是否将程序增加到系统的备份和恢复架构中。

    android:taskAffinity
    Activity的归属,也就是Activity应该在哪个Task中,Activity与Task的吸附关系。默认假设没有设置taskAffinity。则taskAffinity跟包名是一样的
    taskAffinity 和 FLAG_ACTIVITY_NEW_TASK可用来决定activity启动时是否须要新建一个task。

    我们分四种情况看一下这两个标志对启动activity的影响:(前提:从MainActivity中启动ActivityA)
    1)、两个标志都不设置
    2)、有FLAG_ACTIVITY_NEW_TASK  
    3)、无FLAG_ACTIVITY_NEW_TASK有taskAffinity (不同于MainActivity)
    4)、有FLAG_ACTIVITY_NEW_TASK有taskAffinity
    注意上面的标志都是针对于启动的ActivityA。FLAG_ACTIVITY_NEW_TASK  是在启动ActivityA的Intent中设置的,taskAffinity 是在AndroidManifest中ActivityA中设置,另外注意这里两个actiity的启动模式都设置为standard
    1、先看第一中情况:

    主要代码:

    <activity android:name=".ActivityA"    
    			android:launchMode="standard"  
    			android:label="@string/title_activityA">    
      <intent-filter>    
    	  <action android:name="com.leaves.ipanel.ActivityA"/>    
    	  <category android:name="android.intent.category.DEFAULT"/>    
      </intent-filter>    
    </activity>  
    MainActivity启动activity  
    public void onClick(View arg0) {  
    	// TODO Auto-generated method stub  
    	Log.i(TAG, "--onClick--task id = " + getCurrentTaskId());  
    	Intent intent = new Intent("com.leaves.ipanel.ActivityA");      
    
    	startActivity(intent);   
    } 
    启动A之后的堆栈: 



    2、有FLAG_ACTIVITY_NEW_TASK 
    我们加入FLAG_ACTIVITY_NEW_TASK  

    public void onClick(View arg0) {  
    	// TODO Auto-generated method stub  
    	Log.i(TAG, "--onClick--task id = " + getCurrentTaskId());  
    	Intent intent = new Intent("com.leaves.ipanel.ActivityA");      
    	intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
    	startActivity(intent);   
    }  
    
    启动A之后的堆栈:

    3、无FLAG_ACTIVITY_NEW_TASK有taskAffinity (不同于MainActivity)

    <activity android:name=".ActivityA"    
                android:launchMode="standard"  
                android:taskAffinity="com.leaves.test.ActivityA"  
              android:label="@string/title_activityA">    
           <intent-filter>    
               <action android:name="com.leaves.ipanel.ActivityA"/>    
               <category android:name="android.intent.category.DEFAULT"/>    
           </intent-filter>    
    </activity> 
        public void onClick(View arg0) {  
            // TODO Auto-generated method stub  
            Log.i(TAG, "--onClick--task id = " + getCurrentTaskId());  
            Intent intent = new Intent("com.leaves.ipanel.ActivityA");      
              
            startActivity(intent);   
        }  
    查看一下启动A之后的堆栈:

    查看全文

  • 相关阅读:
    eclipse下对中文乱码问题的一些思考
    项目已经部署,tomcat已经启动,网址也没问题,却出现404错误
    The type java.lang.reflect.AnnotatedElement cannot be resolved. It is indirectly referenced from required .class files
    java.lang.ClassCastException: $Proxy0 cannot be cast to javax.servlet.ServletRequestWrapper
    java 线程之-volatile
    带备注的 config
    带备注的 头文件加载文件
    带个人备注的,模板->编译文件->缓存文件
    错过一个订单后,吐槽下自己(顺便分享下书单),剧终版
    错过一个订单后,吐槽下自己(顺便分享下书单),欢迎交流
  • 原文地址:https://www.cnblogs.com/slgkaifa/p/7217522.html
Copyright © 2011-2022 走看看