Android學習-使用單例模式實現一鍵退出APP

來源:互聯網
上載者:User

http://www.ilingxi.com/blog/duanhongchang/?p=72

我們都知道Activity的finish方法只能退出當前的Activity,但如果我們希望一鍵退出所有已經create的Activity又該如何做呢?很簡單,我們通過單例模式設計了一個管理當前活動的Activity的類,名叫MyActivityManager,代碼如下:

import java.util.LinkedList;
import java.util.List;

import android.app.Activity;
import android.app.Application;

/**
 * Activity管理類
 * 1、activity():儲存Activity
 * 2、exit():關閉所有儲存的Activity
 * @author 段宏昌
 *
 */
public class MyActivityManager extends Application {

    /**
     * Activity列表
     */
    private List<Activity> activityList = new LinkedList<Activity>();
    
    /**
     * 全域唯一執行個體
     */
    private static MyActivityManager instance;
    

    /**
     * 該類採用單例模式,不能執行個體化
     */
    private MyActivityManager()
    {
    }

    /**
     * 擷取類執行個體對象
     * @return    MyActivityManager
     */
    public static MyActivityManager getInstance() {
        if (null == instance) {
            instance = new MyActivityManager();            
        }
        return instance;
    }

    /**
     * 儲存Activity到現有列表中
     * @param activity
     */
    public void addActivity(Activity activity) {
        activityList.add(activity);
    }

    /**
     * 關閉儲存的Activity
     */
    public void exit() {
        if(activityList!=null)
        {
            Activity activity;
            
            for (int i=0; i<activityList.size(); i++) {            
                activity = activityList.get(i);
                
                if(activity!=null)
                {
                    if(!activity.isFinishing())
                    {
                        activity.finish();
                    }
                    
                    activity = null;
                }
                
                activityList.remove(i);                
                i–;
            }
        }
    }
}

在每個Activity的onCreate方法中調用MyActivityManager的addActivity方法,然後在需要使用一鍵退出的地方調用MyActivityManager中的exit方法即可。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.