我們學習android的Activity是就已經知道,隨着一個新的Activity被創建,舊的Activity會被壓入棧裏。當我們的應用程序裏有很多的Activity時,隨着用戶的使用,在內存充足的情況下,會有一個又一個Activity被壓入棧,當我們用完了,暫時不用這個應用時,我們往往會按返回鍵。。那麼,往往打開過多少Activity,就需要按多少次返回鍵。這是非常痛苦的。結合自身經驗,和我查詢的一些資料,我找到了幾種退出應用的解決辦法。
一,寫一個廣播。。
我們在每個Activity中,可以寫一個BroadcastReceiver ,然後在退出的時候發出去一個廣播,Activity在接到廣播的時候,調用自身的finish()方法。比如,我們寫一個BaseActivity。
package com.zhw.all_quit;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
/**
* Created with IntelliJ IDEA.
* User: Wymon Zhang
* Date: 13-7-27
* Time: 下午10:30
* 建立一個基礎活動,然後可以讓以後所有的Activity都繼承他來實現
*/
public class BaseActivity extends Activity {
//註冊一個廣播的內部類,當收到關閉事件時,調用finish方法結束當前的Activity
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
finish();
}
};
@Override
public void onResume() {
super.onResume();
//在當前的activity中註冊廣播
IntentFilter filter = new IntentFilter();
filter.addAction(GlobalVarable.EXIT_ACTION);
this.registerReceiver(this.broadcastReceiver, filter);
}
}
然後在要退出的地方 public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
long secondTime = System.currentTimeMillis();
if (secondTime - firstTime > 1000) {//如果兩次按鍵時間間隔大於1000毫秒,則不退出
Toast.makeText(UiMainActivity.this, "再按一次退出程序...", Toast.LENGTH_SHORT).show();
firstTime = secondTime;//Ui更新firstTime
return true;
} else {
Intent intent = new Intent();
intent.setAction(GlobalVarable.EXIT_ACTION); // 退出
this.sendBroadcast(intent);// 發送廣播
super.finish();
//退出線程,銷燬靜態變量
System.exit(0);
}
}
return super.onKeyUp(keyCode, event);
}
對了,需要定義一個firsttime感覺這個方法還不錯。。