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); } }