Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android 退出整個應用

android 退出整個應用

編輯:關於Android編程

如果是直接按home鍵退到桌面,並沒有實際退出整個應用。Activity依然保存在棧中。那麼,怎樣才能關閉所有activity退出整個應用呢?那麼想法當然是用一個集合吧所有的activity保存起來了。那麼用什麼呢?可以用List.用ArrayList還是用linkedList呢?因為這個List主要用於添加和刪除。並不需要提供隨機訪問。因此,使用linkedList.

我們寫一個類,注意這個類要用單例模式:

package cn.com.smartcost.offer.util;

import java.util.LinkedList; 
import java.util.List; 
import android.app.Activity; 
import android.app.Application; 
/**
 * 主要用於退出整個應用
 * 
 * @date 2014-1-3 10:55:10
 *
 */
public class SysApplication extends Application { 
    private List mList = new LinkedList(); 
    private static SysApplication instance; 
 
    private SysApplication() {   
    } 
    public synchronized static SysApplication getInstance() { 
        if (null == instance) { 
            instance = new SysApplication(); 
        } 
        return instance; 
    } 
    /**
     * 在需要退出的Activity的onCrete()方法 
     * @param activity
     */
    public void addActivity(Activity activity) { 
        mList.add(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的onCreate()方法中,使用:

SysApplication.getInstance().addActivity(this);

將activity添加到list中去。

在需要退出的地方:

	//捕捉按鍵
	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		if(keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0){
			if(count == 0){
				++count; //count+1,到1的時候退出應用
				Toast.makeText(LoginActivity.this, "再按一次返回鍵退出縱橫材價",
						Toast.LENGTH_LONG).show();
			}
			if(count == 1){
				SysApplication.getInstance().exit();
			}
			return false;
		}
		//繼續執行父類的其他點擊事件
		return super.onKeyDown(keyCode, event);
	}

注意,system.exit(0)和Activity.finish()有什麼不一樣呢?

Activity.finish():

當你調用此方法的時候,系統只是將最上面的Activity移出了棧,並沒有及時的調用onDestory()方法,其占用的資源也沒有被及時釋放。因為移出了棧,所以當你點擊手機上面的“back”按鍵的時候,也不會找到這個Activity。

System.exit(0)
這玩意是退出整個應用程序的,是針對整個Application的。將整個進程直接KO掉。

Activity.onDestory()
the system is temporarily destroying this instance of the activity to save space.
系統銷毀了這個Activity的實例在內存中占據的空間。
在Activity的生命周期中,onDestory()方法是他生命的最後一步,資源空間什麼的都沒有咯~~。當重新進入此Activity的時候,必須重新創建,執行onCreate()方法。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved