package com.metis.base.activity; import android.app.ProgressDialog; import android.content.Intent; import android.os.Bundle; import android.os.PersistableBundle; import android.support.annotation.AnimRes; import android.support.annotation.StringRes; import android.support.v7.app.AppCompatActivity; import com.metis.base.R; import com.umeng.analytics.MobclickAgent; import com.umeng.message.PushAgent; import java.util.ArrayList; import java.util.List; /** * Created by Beak on 2015/7/21. */ public class BaseActivity extends AppCompatActivity { private static final String TAG = BaseActivity.class.getSimpleName(); private boolean isAlive = false; private ProgressDialog mProgressDialog = null; private ActivityResultListener mActivityResultListener = null; private List<OnBackPressListener> mOnBackPressListenerList = new ArrayList<OnBackPressListener>(); @Override public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) { super.onCreate(savedInstanceState, persistentState); isAlive = true; PushAgent.getInstance(this).onAppStart(); } @Override protected void onResume() { super.onResume(); MobclickAgent.onPageStart(getClass().getSimpleName()); MobclickAgent.onResume(this); } @Override protected void onPause() { super.onPause(); MobclickAgent.onPageEnd(getClass().getSimpleName()); MobclickAgent.onPause(this); } @Override protected void onDestroy() { super.onDestroy(); isAlive = false; } public @AnimRes int getEnterAnimation () { return R.anim.fade_in; } public @AnimRes int getExitAnimation () { return R.anim.fade_out; } public boolean isAlive () { return isAlive; } @Override public void finish() { super.finish(); overridePendingTransition(getEnterAnimation(), getExitAnimation()); } public void showProgressDialog (boolean cancelable) { showProgressDialog(null, cancelable); } public void showProgressDialog (@StringRes int msgRes, boolean cancelable) { showProgressDialog(getString(msgRes), cancelable); } public void showProgressDialog (CharSequence msg, boolean cancelable) { if (mProgressDialog != null && mProgressDialog.isShowing()) { dismissProgressDialog(); } if (mProgressDialog == null) { mProgressDialog = new ProgressDialog(this); mProgressDialog.setCancelable(cancelable); mProgressDialog.setMessage(msg); mProgressDialog.show(); } } public void dismissProgressDialog () { if (mProgressDialog != null && mProgressDialog.isShowing()) { mProgressDialog.dismiss(); mProgressDialog = null; } } @Override public /*final */void onBackPressed() { final int mPressLength = mOnBackPressListenerList.size(); if (mPressLength > 0) { for (int i = mPressLength - 1; i >= 0; i--) { OnBackPressListener listener = mOnBackPressListenerList.get(i); if (listener.onBackPressedReceived()) { return; } } } super.onBackPressed(); } @Override public void startActivityForResult(Intent intent, int requestCode, Bundle options) { super.startActivityForResult(intent, requestCode, options); overridePendingTransition(getEnterAnimation(), getExitAnimation()); } public void startActivityForResult (Intent intent, int requestCode, Bundle options, ActivityResultListener listener) { this.mActivityResultListener = listener; startActivityForResult(intent, requestCode, options); } public void startActivityForResult (Intent intent, int requestCode, ActivityResultListener listener) { this.mActivityResultListener = listener; startActivityForResult(intent, requestCode); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); ActivityResultListener listener = mActivityResultListener; mActivityResultListener = null; if (listener != null) { listener.onActivityResultReceived(requestCode, resultCode, data); //mActivityResultListener = null; } } public void setActivityResultListener (ActivityResultListener listener) { mActivityResultListener = listener; } public void registerOnBackPressListener (OnBackPressListener listener) { if (listener == null || mOnBackPressListenerList.contains(listener)) { return; } mOnBackPressListenerList.add(listener); } public void unregisterOnBackPressListener (OnBackPressListener listener) { if (listener == null || !mOnBackPressListenerList.contains(listener)) { return; } mOnBackPressListenerList.remove(listener); } public interface ActivityResultListener { public void onActivityResultReceived (int requestCode, int resultCode, Intent data); } public interface OnBackPressListener { public boolean onBackPressedReceived(); } }