Android属性设置android:noHistory="true"

来源:互联网 发布:知道arp攻击源mac地址 编辑:程序博客网 时间:2024/06/04 23:23



设置 android:noHistory="true"后,该Activity在statck中不留历史痕迹。默认的值是false。

举例说明,假设有三个Activity分别是:A,B,C。这三个Activity可以依次顺序启动下一个Activity,比如,在A中做一个Button,用户点击后跳转到B ; 同样,在B中也做一个Button,点击跳转到C。C不再做Button,只是一个用以演示的空壳Activity。

在AndroidManifest.xml中配置B的属性为:android:noHistory="true"

其他两个不做特别设置,仅仅作为一般的Activity处理。

可以观察到,A启动后,从A跳转到B,再从B跳转到C,进入C后,此时如果按返回键,将直接进入A,而不是B。简单的跳转逻辑路线:

A –> B –> C –> 按返回键 –> A

综上,可以这么理解android:noHistory="true"对Activity行为的影响:当该Activity屏幕不可见时,相当于Android系统调用Activity的finish()方法结束了该Activity。


实验代码:


A.java

[java] view plain copy
  1. package zhangphil.test;  
  2.   
  3. import android.support.v7.app.ActionBarActivity;  
  4. import android.view.View;  
  5. import android.widget.Button;  
  6. import android.content.Context;  
  7. import android.content.Intent;  
  8. import android.os.Bundle;  
  9.   
  10. public class A extends ActionBarActivity {  
  11.   
  12.     @Override  
  13.     protected void onCreate(Bundle savedInstanceState) {  
  14.         super.onCreate(savedInstanceState);  
  15.   
  16.         Button button = new Button(this);  
  17.         button.setText("点击跳转到B");  
  18.         final Context context = this;  
  19.         button.setOnClickListener(new View.OnClickListener() {  
  20.   
  21.             @Override  
  22.             public void onClick(View v) {  
  23.                 Intent intent = new Intent(context, B.class);  
  24.                 startActivity(intent);  
  25.             }  
  26.         });  
  27.           
  28.         setContentView(button);  
  29.     }  
  30. }  


B.java

[java] view plain copy
  1. package zhangphil.test;  
  2.   
  3. import android.support.v7.app.ActionBarActivity;  
  4. import android.view.View;  
  5. import android.widget.Button;  
  6. import android.content.Context;  
  7. import android.content.Intent;  
  8. import android.os.Bundle;  
  9.   
  10. /** 
  11.  * android:noHistory="true" 
  12.  *  
  13.  * */  
  14.   
  15. public class B extends ActionBarActivity {  
  16.   
  17.     @Override  
  18.     protected void onCreate(Bundle savedInstanceState) {  
  19.         super.onCreate(savedInstanceState);  
  20.           
  21.         Button button = new Button(this);  
  22.         button.setText("点击跳转到C");  
  23.         final Context context = this;  
  24.         button.setOnClickListener(new View.OnClickListener() {  
  25.   
  26.             @Override  
  27.             public void onClick(View v) {  
  28.                 Intent intent = new Intent(context, C.class);  
  29.                 startActivity(intent);  
  30.             }  
  31.         });  
  32.           
  33.         setContentView(button);  
  34.     }  
  35. }  

C.java

[java] view plain copy
  1. package zhangphil.test;  
  2.   
  3. import android.support.v7.app.ActionBarActivity;  
  4. import android.os.Bundle;  
  5.   
  6. public class C extends ActionBarActivity {  
  7.   
  8.     @Override  
  9.     protected void onCreate(Bundle savedInstanceState) {  
  10.         super.onCreate(savedInstanceState);  
  11.     }  
  12. }  


AndroidManifest.xml

[html] view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     package="zhangphil.test"  
  4.     android:versionCode="1"  
  5.     android:versionName="1.0" >  
  6.   
  7.     <uses-sdk  
  8.         android:minSdkVersion="8"  
  9.         android:targetSdkVersion="22" />  
  10.   
  11.     <application  
  12.         android:allowBackup="true"  
  13.         android:icon="@drawable/ic_launcher"  
  14.         android:label="@string/app_name"  
  15.         android:theme="@style/AppTheme" >  
  16.         <activity  
  17.               
  18.             android:name=".A"  
  19.             android:label="A" >  
  20.             <intent-filter>  
  21.                 <action android:name="android.intent.action.MAIN" />  
  22.   
  23.                 <category android:name="android.intent.category.LAUNCHER" />  
  24.             </intent-filter>  
  25.         </activity>  
  26.           
  27.         <activity   
  28.             android:noHistory="true"  
  29.               
  30.             android:name=".B"  
  31.             android:label="B" >  
  32.         </activity>  
  33.           
  34.          <activity   
  35.             android:name=".C"  
  36.             android:label="C" >  
  37.         </activity>  
  38.           
  39.     </application>  
  40.   
  41. </manifest>  


设置 android:noHistory="true"后,该Activity在statck中不留历史痕迹。默认的值是false。

举例说明,假设有三个Activity分别是:A,B,C。这三个Activity可以依次顺序启动下一个Activity,比如,在A中做一个Button,用户点击后跳转到B ; 同样,在B中也做一个Button,点击跳转到C。C不再做Button,只是一个用以演示的空壳Activity。

在AndroidManifest.xml中配置B的属性为:android:noHistory="true"

其他两个不做特别设置,仅仅作为一般的Activity处理。

可以观察到,A启动后,从A跳转到B,再从B跳转到C,进入C后,此时如果按返回键,将直接进入A,而不是B。简单的跳转逻辑路线:

A –> B –> C –> 按返回键 –> A

综上,可以这么理解android:noHistory="true"对Activity行为的影响:当该Activity屏幕不可见时,相当于Android系统调用Activity的finish()方法结束了该Activity。


实验代码:


A.java

[java] view plain copy
  1. package zhangphil.test;  
  2.   
  3. import android.support.v7.app.ActionBarActivity;  
  4. import android.view.View;  
  5. import android.widget.Button;  
  6. import android.content.Context;  
  7. import android.content.Intent;  
  8. import android.os.Bundle;  
  9.   
  10. public class A extends ActionBarActivity {  
  11.   
  12.     @Override  
  13.     protected void onCreate(Bundle savedInstanceState) {  
  14.         super.onCreate(savedInstanceState);  
  15.   
  16.         Button button = new Button(this);  
  17.         button.setText("点击跳转到B");  
  18.         final Context context = this;  
  19.         button.setOnClickListener(new View.OnClickListener() {  
  20.   
  21.             @Override  
  22.             public void onClick(View v) {  
  23.                 Intent intent = new Intent(context, B.class);  
  24.                 startActivity(intent);  
  25.             }  
  26.         });  
  27.           
  28.         setContentView(button);  
  29.     }  
  30. }  


B.java

[java] view plain copy
  1. package zhangphil.test;  
  2.   
  3. import android.support.v7.app.ActionBarActivity;  
  4. import android.view.View;  
  5. import android.widget.Button;  
  6. import android.content.Context;  
  7. import android.content.Intent;  
  8. import android.os.Bundle;  
  9.   
  10. /** 
  11.  * android:noHistory="true" 
  12.  *  
  13.  * */  
  14.   
  15. public class B extends ActionBarActivity {  
  16.   
  17.     @Override  
  18.     protected void onCreate(Bundle savedInstanceState) {  
  19.         super.onCreate(savedInstanceState);  
  20.           
  21.         Button button = new Button(this);  
  22.         button.setText("点击跳转到C");  
  23.         final Context context = this;  
  24.         button.setOnClickListener(new View.OnClickListener() {  
  25.   
  26.             @Override  
  27.             public void onClick(View v) {  
  28.                 Intent intent = new Intent(context, C.class);  
  29.                 startActivity(intent);  
  30.             }  
  31.         });  
  32.           
  33.         setContentView(button);  
  34.     }  
  35. }  

C.java

[java] view plain copy
  1. package zhangphil.test;  
  2.   
  3. import android.support.v7.app.ActionBarActivity;  
  4. import android.os.Bundle;  
  5.   
  6. public class C extends ActionBarActivity {  
  7.   
  8.     @Override  
  9.     protected void onCreate(Bundle savedInstanceState) {  
  10.         super.onCreate(savedInstanceState);  
  11.     }  
  12. }  


AndroidManifest.xml

[html] view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     package="zhangphil.test"  
  4.     android:versionCode="1"  
  5.     android:versionName="1.0" >  
  6.   
  7.     <uses-sdk  
  8.         android:minSdkVersion="8"  
  9.         android:targetSdkVersion="22" />  
  10.   
  11.     <application  
  12.         android:allowBackup="true"  
  13.         android:icon="@drawable/ic_launcher"  
  14.         android:label="@string/app_name"  
  15.         android:theme="@style/AppTheme" >  
  16.         <activity  
  17.               
  18.             android:name=".A"  
  19.             android:label="A" >  
  20.             <intent-filter>  
  21.                 <action android:name="android.intent.action.MAIN" />  
  22.   
  23.                 <category android:name="android.intent.category.LAUNCHER" />  
  24.             </intent-filter>  
  25.         </activity>  
  26.           
  27.         <activity   
  28.             android:noHistory="true"  
  29.               
  30.             android:name=".B"  
  31.             android:label="B" >  
  32.         </activity>  
  33.           
  34.          <activity   
  35.             android:name=".C"  
  36.             android:label="C" >  
  37.         </activity>  
  38.           
  39.     </application>  
  40.   
  41. </manifest>  
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 跟老公八字不合怎么办 做俯卧撑胸肌疼怎么办 健身完肌肉酸痛怎么办 不小心杀生了怎么办 名字取得太大了怎么办 麻将馆没客人怎么办 顺丰快递着急怎么办 孕妇吃菠萝过敏怎么办 燕窝炖稀了怎么办 玻尿酸隆鼻变宽怎么办? 三无燕窝被打假 怎么办 喜用神为土应该怎么办 喜用神互相克害怎么办? 姓名总格不好怎么办 姓名学里人格不好怎么办 买家订单下不了怎么办 公积金不够月供怎么办 房贷担保费没交怎么办 营业执照过期1年怎么办 营业执照和公章丢失怎么办 个体户怎么办对公账户 公章法人章丢失怎么办 广州买房没有社保怎么办 辞职后计生关系怎么办 广州换工作社保怎么办 学校更名了盖章怎么办 工商注册资金没有交怎么办 住公司宿舍怎么办居住证 住在公司宿舍怎么办居住证 滴滴没有的车型怎么办 假的租房合同怎么办 代注册公司被骗怎么办 公司跨区迁址怎么办 公司搬走注册地怎么办 注册公司没有房产证怎么办 公司不运营了怎么办 公司注销了账户怎么办 租户不变更地址怎么办 营业执照忘审了怎么办 工商营业执照年检过期怎么办 个体营业执照没有年报怎么办?