市面上99.9的Android程序都是免費(fèi)安裝的无午,不像ios需要收取昂貴的費(fèi)用,因此偿曙,很多Android開發(fā)者都會(huì)在自己的應(yīng)用加入啟動(dòng)界面廣告,以獲取微小的辛苦費(fèi)谜洽。
廣告界面(Advertise)是一個(gè)獨(dú)立的Activity并且是主界面萝映,我們會(huì)讓程序在這個(gè)界面停留幾秒鐘,讓用戶觀看我們的廣告阐虚,然后
startActivity(new Intent(Advertise.this,Main.class))
啟動(dòng)主內(nèi)容界面序臂,但是,這樣就不可避免的出現(xiàn)一個(gè)問(wèn)題实束,當(dāng)用戶在Main主內(nèi)容界面按下back鍵的時(shí)候奥秆,程序就返回Advertise廣告界面,這樣的用戶體驗(yàn)很可能會(huì)讓用戶討厭繼而刪除應(yīng)用磕洪。那么我們?cè)趺唇鉀Q這個(gè)問(wèn)題吭练?這時(shí)候我們就需要一個(gè)Activity管理器管理所有的Activity诫龙,每啟動(dòng)一個(gè)Activity我們都把它添加到管理器析显,對(duì)應(yīng)的每結(jié)束一個(gè)Activity我們就把它從管理器刪除,那么如果在Main主內(nèi)容界面點(diǎn)擊back退出應(yīng)用的時(shí)候签赃,只要遍歷Activity管理器谷异,把每一個(gè)Activity都finish(),這樣我們的應(yīng)用就不會(huì)再返回廣告主界面(Advertise)了锦聊,而且完全退出應(yīng)用歹嘹。下面是Activity管理器代碼。
public static class ActivityCollector{
private List<Activity> activities = new ArrayList();//這里我們創(chuàng)建一個(gè)List集合保存所有啟動(dòng)的Activity
//添加一個(gè)Activity到集合
public static void add(Activity activity){
activities.add(activity);
} //從集合中移除某個(gè)Activity
public static void remove(Activity activity){
activities.remove(activity);
}//遍歷集合所有Activity并且結(jié)束該Activity
public static void finishAll(){
for(Activity activity:activities){
activity.finash();
}
}
}
這樣只要我們?cè)诿恳粋€(gè)啟動(dòng)的Activity回調(diào)的onCreate()方法調(diào)用ActivityCollector.add(this)
把每一個(gè)Activity都加入管理器管理孔庭,對(duì)應(yīng)的在每一個(gè)啟動(dòng)的Activity回調(diào)的onDestory()方法調(diào)用ActivityCollector.remove(this)
把銷毀的Activity從管理器去除尺上。如果我們需要在程序某個(gè)地方退出整個(gè)應(yīng)用,只需要執(zhí)行以下代碼即可圆到。
ActivityCollector.finishAll();
以上就是Android程序?qū)崿F(xiàn)在任意一處完全退出應(yīng)用的方法怎抛。