public class BaseActivity extends FragmentActivity {
private MyBroadcastReceiver mBroadcastReceiver;
private LocalBroadcastManager mLocalBroadcastManager;
protected Dialog progressDialog;
private boolean isTimeOut;
private boolean isMainAct;
private boolean isActive = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTranslucentStatus();
ActivityManager.getAppManager().addActivity(this);
mLocalBroadcastManager = LocalBroadcastManager.getInstance(this);
mBroadcastReceiver = new MyBroadcastReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(Constant.TOKEN_UPDATE_ACTION);
mLocalBroadcastManager.registerReceiver(mBroadcastReceiver, intentFilter);
isMainAct = this instanceof MainActivity;
if (isMainAct) {
isShowGesture();
}
}
@Override
protected void onResume() {
super.onResume();
if (!isActive) {
isActive = true;
isTimeOut = DateUtil.checkTimeOut(10 * 1000);
if (isTimeOut) {
isShowGesture();
}
}
}
@Override
protected void onStop() {
super.onStop();
if (!isAppOnFreground()) {
isActive = false;
SharePerfenceUtil.setClickHomeTime(System.currentTimeMillis());
}
}
/**
* 是否在后台
*/
public boolean isAppOnFreground(){
android.app.ActivityManager am = (android.app.ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE);
String curPackageName = getApplicationContext().getPackageName();
List<android.app.ActivityManager.RunningAppProcessInfo> app = am.getRunningAppProcesses();
if(app==null){
return false;
}
for(android.app.ActivityManager.RunningAppProcessInfo a:app){
if(a.processName.equals(curPackageName)&&
a.importance == android.app.ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND){
return true;
}
}
return false;
}
@Override
protected void onPause() {
super.onPause();
if (progressDialog != null) {
if (progressDialog.isShowing()) {
progressDialog.dismiss();
}
progressDialog = null;
}
}
@Override
protected void onDestroy() {
super.onDestroy();
ActivityManager.getAppManager().finishActivity(this);
if (mLocalBroadcastManager != null && mBroadcastReceiver != null) {
mLocalBroadcastManager.unregisterReceiver(mBroadcastReceiver);
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (KeyEvent.KEYCODE_BACK == keyCode) {
if (mLocalBroadcastManager != null && mBroadcastReceiver != null) {
mLocalBroadcastManager.unregisterReceiver(mBroadcastReceiver);
}
}
return super.onKeyDown(keyCode, event);
}
private void isShowGesture() {
Activity currentActivity = ActivityManager.getAppManager().currentActivity();
if (currentActivity instanceof GestureUnlockActivity) {
return;
}
boolean isGestureOpen = (boolean) SharePerfenceUtil.getParam(SPKeys.ISGESTUREOPEN, false);
if ((isMainAct || isTimeOut) && isGestureOpen) {
Intent intent = new Intent(this, GestureUnlockActivity.class);
Bundle bundle = new Bundle();
bundle.putString("fromMainAct", "fromMainAct");
intent.putExtras(bundle);
startActivity(intent);
}
}
protected boolean isDestroy(Activity activity) {
return activity == null || activity.isFinishing() ||
(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1 && activity.isDestroyed());
}
}
Public class DateUtil {
public static boolean checkTimeOut(long limitTime) {
long endtime = System.currentTimeMillis();
return endtime - SharePerfenceUtil.getClickHomeTime() >= limitTime;
}
}