import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.app.Application;
/**
* 應用配置類
* @author leehongee
*
*/
public class AppManager extends Application{
/**打開的activity**/
private List<Activity> activities = new ArrayList<Activity>();
/**應用實例**/
private static AppManager instance;
/**
* 獲得實例
* @return
*/
public static AppManager getInstance(){
return instance;
}
/**
* 新建了一個activity
* @param activity
*/
public void addActivity(Activity activity){
activities.add(activity);
}
/**
* 結束指定的Activity
* @param activity
*/
public void finishActivity(Activity activity){
if (activity!=null) {
this.activities.remove(activity);
activity.finish();
activity = null;
}
}
/**
* 應用退出,結束所有的activity
*/
public void exit(){
for (Activity activity : activities) {
if (activity!=null) {
activity.finish();
}
}
System.exit(0);
}
@Override
public void onCreate() {
instance = this;
}
}
然后我寫了一個BaseActivity,以后的Activity 都繼承這個Activity,如下
import android.app.Activity;
import android.os.Bundle;
import android.os.StrictMode;
/**
* 基本Activity
* @author leehongee
* @date 2013-1-26 下午6:24:47
* @version
*/
public class BaseActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//添加到Activity集合
AppManager.getInstance().addActivity(this);
//手機端SDK>10,即 android 2.3.x之后在主線程中訪問網絡需要加入如下代碼
if (AppConfig.getSDKVersionNumber()>10) {
// 詳見StrictMode文檔
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork() // or .detectAll() for all detectable problems
.penaltyLog()
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
.detectLeakedClosableObjects()
.penaltyLog()
.penaltyDeath()
.build());
}
}
@Override
public void onBackPressed() {
super.onBackPressed();
onDestroy();
}
@Override
protected void onDestroy() {
super.onDestroy();
//結束Activity&從集合中移除
AppManager.getInstance().finishActivity(this);
}
}
