退出窗口[置顶] 退出Activity的方法
上班之余抽點(diǎn)時(shí)間出來寫寫博文,希望對(duì)新接觸的朋友有幫助。今天在這里和大家一起學(xué)習(xí)一下退出窗口
????
1..?停止全體Activity的方法
????
???????ActivityManager activityMgr = (ActivityManager) OneActivity.this.getSystemService(ACTIVITY_SERVICE);
????
?
????
???????activityMgr.restartPackage(getPackageName());
????
<uses-permission?android:name="android.permission.RESTART_PACKAGES"?/>
????
2. android.os.Process.killProcess(android.os.Process.myPid())//獲得PID
????
?
????
3.?任務(wù)管理器方法
????
首先要說明該方法運(yùn)行在Android 1.5 APILevel為3以上才可以,同時(shí)需要權(quán)限
????
ActivityManager am= (ActivityManager)getSystemService (Context.ACTIVITY_SERVICE);
????
am.restartPackage(getPackageName());
????
系統(tǒng)會(huì)將,該包下的 ,全體進(jìn)程,服務(wù),全體殺掉,就能夠殺干凈了,要注意加上
????
4.?根據(jù)Activity的聲明周期,我們知道Android的窗口類提供了歷史棧,我們可以通過stack的道理來奇妙的實(shí)現(xiàn),這里我們?cè)贏窗口打開B窗口時(shí)在Intent中直接加入標(biāo)志Intent.FLAG_ACTIVITY_CLEAR_TOP,這樣開啟B時(shí)將會(huì)清除該進(jìn)程空間的全體Activity。
????
在A窗口中使用上面的代碼調(diào)用B窗口
????
Intent intent = newIntent();
????
intent.setClass(Android123.this,CWJ.class);
????
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//注意本行的FLAG設(shè)置
????
startActivity(intent);
????
接下來在B窗口中需要退出時(shí)直接使用finish方法便可全體退出。
????
5.自定義一個(gè)Actiivty?棧,道理同上,不過利用一個(gè)單例模式的Activity棧來管理全體Activity。并提供退出全體Activity的方法。代碼如下:
????
public classScreenManager {
????
private staticStack activityStack;
????
private staticScreenManager instance;
????
privateScreenManager(){
????
}
????
public staticScreenManager getScreenManager(){
????
instance=newScreenManager();
????
}
????
return instance;
????
}
????
//退出棧頂Activity
????
public voidpopActivity(Activity activity){
????
activity.finish();
????
activityStack.remove(activity);
每日一道理記不清有多少個(gè)夜晚,在我翻閱紙張的指間滑落;記不清有多少支蠟燭,在我的凝視中化為灰燼。逝者如斯,我時(shí)時(shí)刻刻會(huì)聽見自己對(duì)生命承諾的余音,感到歲月的流轉(zhuǎn)在漸漸稀釋我的年少無知,我愿自己是一只上足了發(fā)條的時(shí)鐘,在晝夜不停的流轉(zhuǎn)中留下自己充實(shí)的每一刻。
????
activity=null;
????
}
????
}
????
//獲得以后棧頂Activity
????
public ActivitycurrentActivity(){
????
Activityactivity=activityStack.lastElement();
????
return activity;
????
}
????
//將以后Activity推入棧中
????
public voidpushActivity(Activity activity){
????
activityStack=newStack();
????
}
????
activityStack.add(activity);
????
}
????
//退出棧中全體Activity
????
public voidpopAllActivityExceptOne(Class cls){
????
while(true){
????
Activityactivity=currentActivity();
????
break;
????
}
????
break;
????
}
????
popActivity(activity);
????
}
????
}
????
}
????
?
????
2.android開辟時(shí),finish()跟System.exit(0)的區(qū)別
????
這兩天在弄android,遇到一個(gè)問題:所開辟的小游戲中有背景音樂,玩的過程當(dāng)中始終有音樂在放著,然后在我退出游戲后,音樂還在播放!
????
我看了一下我最開始寫的退出游戲的代碼,就是簡(jiǎn)略的finish()語句。我想應(yīng)該是這個(gè)地方出了問題。后來想了想,以前似乎見過有用System.exit(0)退出游戲的,然后就嘗試了一下,發(fā)現(xiàn)問題果然處理了。
????
當(dāng)初來完全弄清楚兩者的區(qū)別。
????
首先一個(gè)Activity是有生命周期的,onCreate,onStart,onResume,onPause,onStop,onDestroy...
????
finish是Activity的類,僅僅針對(duì)Activity,當(dāng)調(diào)用finish()時(shí),只是將活動(dòng)推向后臺(tái),并沒有當(dāng)即釋放內(nèi)存,活動(dòng)的資源并沒有被清理;當(dāng)調(diào)用System.exit(0)時(shí),殺死了整個(gè)進(jìn)程,這時(shí)候活動(dòng)所占的資源也會(huì)被釋放。
????
其實(shí)android的機(jī)制決定了用戶沒法完整退出應(yīng)用,當(dāng)你的application最長(zhǎng)時(shí)間沒有被用過的時(shí)候,android自身會(huì)決定將application關(guān)閉了。
文章結(jié)束給大家分享下程序員的一些笑話語錄: 愛情觀
愛情就是死循環(huán),一旦執(zhí)行就陷進(jìn)去了。
愛上一個(gè)人,就是內(nèi)存泄露--你永遠(yuǎn)釋放不了。
真正愛上一個(gè)人的時(shí)候,那就是常量限定,永遠(yuǎn)不會(huì)改變。
女朋友就是私有變量,只有我這個(gè)類才能調(diào)用。
情人就是指針用的時(shí)候一定要注意,要不然就帶來巨大的災(zāi)難。
總結(jié)
以上是生活随笔為你收集整理的退出窗口[置顶] 退出Activity的方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 简单字符串过滤练习
- 下一篇: Mac os android×××,环境