1. 程式人生 > >四種結束當前的activity方法

四種結束當前的activity方法

每一個activity都有自己的生命週期,被打開了最終就要被關閉。

四種結束當前的activity方法

Java程式碼 複製程式碼 收藏程式碼
  1. //關閉當前activity方法一
  2. finish();
  3. //關閉當前介面方法二
  4. android.os.Process.killProcess(android.os.Process.myPid());
  5. //關閉當前介面方法三
  6. System.exit(0);
  7. //關閉當前介面方法四
  8. this.onDestroy();
//關閉當前activity方法一
    finish();
    
//關閉當前介面方法二
    android.os.Process.killProcess(android.os.Process.myPid());
    
//關閉當前介面方法三
    System.exit(0);

//關閉當前介面方法四
    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);
Intent intent = new Intent();
intent.setClass(TableActivity.this, FrameActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);//設定不要重新整理將要跳到的介面
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//它可以關掉所要到的介面中間的activity
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);
Intent intent = new Intent();
intent.setClass(TableActivity.this, FrameActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//它可以關掉所要到的介面中間的activity
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);
Intent intent1 = new Intent(TableActivity.this, FrameActivity.class);  
intent1.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);    
startActivity(intent1); 

如果已經啟動了四個Activity:A,B,C和D,在D Activity裡,想要一次性關閉所有的activity

建立一個專門用來處理activity的類

Java程式碼 複製程式碼 收藏程式碼
  1. package com.layout;
  2. import java.util.LinkedList;
  3. import java.util.List;
  4. import android.app.Activity;
  5. import android.app.Application;
  6. /**
  7. * 一個類 用來結束所有後臺activity
  8. * @author Administrator
  9. *
  10. */
  11. public class SysApplication extends Application {
  12. //運用list來儲存們每一個activity是關鍵
  13. private List<Activity> mList = new LinkedList<Activity>();
  14. //為了實現每次使用該類時不建立新的物件而建立的靜態物件
  15. private static SysApplication instance;
  16. //構造方法
  17. private SysApplication(){}
  18. //例項化一次
  19. public synchronized static SysApplication getInstance(){
  20. if (null == instance) {
  21. instance = new SysApplication();
  22. }
  23. return instance;
  24. }
  25. // add Activity
  26. public void addActivity(Activity activity) {
  27. mList.add(activity);
  28. }
  29. //關閉每一個list內的activity
  30. public void exit() {
  31. try {
  32. for (Activity activity:mList) {
  33. if (activity != null)
  34. activity.finish();
  35. }
  36. } catch (Exception e) {
  37. e.printStackTrace();
  38. } finally {
  39. System.exit(0);
  40. }
  41. }
  42. //殺程序
  43. public void onLowMemory() {
  44. super.onLowMemory();
  45. System.gc();
  46. }
  47. }
package com.layout;

import java.util.LinkedList; 
import java.util.List; 
import android.app.Activity; 
import android.app.Application; 
/**
 * 一個類 用來結束所有後臺activity
 * @author Administrator
 *
 */
public class SysApplication extends Application {
	//運用list來儲存們每一個activity是關鍵
    private List<Activity> mList = new LinkedList<Activity>();
    //為了實現每次使用該類時不建立新的物件而建立的靜態物件
    private static SysApplication instance; 
    //構造方法
    private SysApplication(){}
    //例項化一次
    public synchronized static SysApplication getInstance(){ 
        if (null == instance) { 
            instance = new SysApplication(); 
        } 
        return instance; 
    } 
    // add Activity  
    public void addActivity(Activity activity) { 
        mList.add(activity); 
    } 
    //關閉每一個list內的activity
    public void exit() { 
        try { 
            for (Activity activity:mList) { 
                if (activity != null) 
                    activity.finish(); 
            } 
        } catch (Exception e) { 
            e.printStackTrace(); 
        } finally { 
            System.exit(0); 
        } 
    } 
    //殺程序
    public void onLowMemory() { 
        super.onLowMemory();     
        System.gc(); 
    }  
}
 

在每個activity被建立時加上

Java程式碼 複製程式碼 收藏程式碼
  1. SysApplication.getInstance().addActivity(this);
SysApplication.getInstance().addActivity(this);

將該activity新增到list中去。

當你想關閉時,呼叫SysApplication的exit方

Java程式碼 複製程式碼 收藏程式碼
  1. //關閉整個程式
  2. SysApplication.getInstance().exit();