zoukankan      html  css  js  c++  java
  • 转_ _android开发中如何结束所有的activity

    每一个activity都有自己的生命周期,被打开了最终就要被关闭。

           四种结束当前的activity方法

    Java代码:  
    1. //关闭当前activity方法一  
    2.     finish();  
    3.       
    4. //关闭当前界面方法二  
    5.     android.os.Process.killProcess(android.os.Process.myPid());  
    6.       
    7. //关闭当前界面方法三  
    8.     System.exit(0);  
    9.   
    10. //关闭当前界面方法四  
    11.     this.onDestroy();  

              但如果已经启动了四个Activity:A,B,C和D,

        在D Activity里,想再启动一个Activity B,但不变成A,B,C,D,B,而是希望是A,B,而且B上的数据依然保留

    Java代码:  
    1. Intent intent = new Intent();  
    2. intent.setClass(TableActivity.this, FrameActivity.class);  
    3. intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);//设置不要刷新将要跳到的界面  
    4. intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//它可以关掉所要到的界面中间的activity  
    5. startActivity(intent);  

             如果已经启动了四个Activity:A,B,C和D,

    在D Activity里,想再启动一个Activity B,但不变成A,B,C,D,B,而是希望是A,B,而且B上的数据不保留

    Java代码: 
    1. Intent intent = new Intent();  
    2. intent.setClass(TableActivity.this, FrameActivity.class);  
    3. intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//它可以关掉所要到的界面中间的activity  
    4. startActivity(intent);  

               如果已经启动了四个Activity:A,B,C和D,在D Activity里,
       /想再启动一个 Activity B,但不变成A,B,C,D,B,而是希望是A,C,D,B,则可以像下面写代码:

    Java代码:  
    1. Intent intent1 = new Intent(TableActivity.this, FrameActivity.class);    
    2. intent1.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);      
    3. startActivity(intent1);   

             如果已经启动了四个Activity:A,B,C和D,在D Activity里,想要一次性关闭所有的activity

    创建一个专门用来处理activity的类

    Java代码:  
    1. package com.layout;  
    2.   
    3. import java.util.LinkedList;   
    4. import java.util.List;   
    5. import android.app.Activity;   
    6. import android.app.Application;   
    7. /** 
    8.  * 一个类 用来结束所有后台activity 
    9.  * @author Administrator 
    10.  * 
    11.  */  
    12. public class SysApplication extends Application {  
    13.     //运用list来保存们每一个activity是关键  
    14.     private List<Activity> mList = new LinkedList<Activity>();  
    15.     //为了实现每次使用该类时不创建新的对象而创建的静态对象  
    16.     private static SysApplication instance;   
    17.     //构造方法  
    18.     private SysApplication(){}  
    19.     //实例化一次  
    20.     public synchronized static SysApplication getInstance(){   
    21.         if (null == instance) {   
    22.             instance = new SysApplication();   
    23.         }   
    24.         return instance;   
    25.     }   
    26.     // add Activity    
    27.     public void addActivity(Activity activity) {   
    28.         mList.add(activity);   
    29.     }   
    30.     //关闭每一个list内的activity  
    31.     public void exit() {   
    32.         try {   
    33.             for (Activity activity:mList) {   
    34.                 if (activity != null)   
    35.                     activity.finish();   
    36.             }   
    37.         } catch (Exception e) {   
    38.             e.printStackTrace();   
    39.         } finally {   
    40.             System.exit(0);   
    41.         }   
    42.     }   
    43.     //杀进程  
    44.     public void onLowMemory() {   
    45.         super.onLowMemory();       
    46.         System.gc();   
    47.     }    
    48. }  
    49.    

      在每个activity被创建时加上

    Java代码:  
    1. SysApplication.getInstance().addActivity(this);  

       将该activity添加到list中去。

        当你想关闭时,调用SysApplication的exit方法

    Java代码:  
      1. //关闭整个程序  
      2. SysApplication.getInstance().exit();  
  • 相关阅读:
    EBS SQL > Form & Report
    oracle sql 优化分析点
    MRP 物料需求计划
    MRPII 制造资源计划
    Barcode128 应用实务
    Oracle SQL语句优化技术分析
    APPSQLAP10710 Online accounting could not be created. AP Invoice 无法创建会计分录
    Oracle数据完整性和锁机制
    ORACLE Responsibility Menu Reference to Other User
    EBS 常用 SQL
  • 原文地址:https://www.cnblogs.com/awkflf11/p/4613490.html
Copyright © 2011-2022 走看看