項目在開發(fā)的時候 有單點登錄的功能要做
項目中有 支付寶 微信充值 主要是 支付寶充值 如手機中沒有支付寶應(yīng)用 就在應(yīng)用內(nèi)打開h5的支付寶充值頁面 這就涉及到 第三方sdk 中的activity關(guān)閉問題
注冊 ActivityLifecycleCallbacks 監(jiān)聽?wèi)?yīng)用內(nèi)所有 Activity的生命周期
public class GApplication extends Application {
//記錄當(dāng)前棧里所有activity
private List<Activity> activities = new ArrayList<Activity>();
//記錄需要一次性關(guān)閉的頁面
private List<Activity> activitys = new ArrayList<Activity>();
private static GApplication instance;
DataBaseHelper dbHelper;
private SharedPreferencesUtil sharedPreferencesUtil;
//聲明AMapLocationClient類對象
public ApiLogin apiLoginUserInfo;
public boolean openLogin = false;
public boolean pushIsForce = false;
public boolean isEditOrder = false;
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
/**
* 獲得實例
*
* @return
*/
public static GApplication getInstance() {
return instance;
}
@Override
public void onCreate() {
super.onCreate();
FontUtils.getInstance().replaceSystemDefaultFontFromAsset(this, "fonts/robotoregular.ttf");
registerActivityLifecycleCallbacks(new MyActivityLifecycleCallbacks());
instance = this;
//禁止默認(rèn)的頁面統(tǒng)計方式
MobclickAgent.openActivityDurationTrack(false);
//debug模式
MobclickAgent.setScenarioType(getApplicationContext(), MobclickAgent.EScenarioType.E_UM_NORMAL);
CrashReport.initCrashReport(getApplicationContext(), "73b6bbb172", true);
sharedPreferencesUtil = SharedPreferencesUtil.getInstance(this);
sanxinBug();
initUser();
}
public SharedPreferencesUtil getSharedPreferencesUtil() {
return sharedPreferencesUtil;
}
public DataBaseHelper getDbHelper() {
return dbHelper;
}
public void initUser() {
apiLoginUserInfo = new ApiLogin();
if (apiLoginUserInfo == null) {
ApiLogin apiLogin = JacksonUtil.getInstance().readValue(sharedPreferencesUtil.getGsonUserInfo(), ApiLogin.class);
if (apiLogin != null)
apiLoginUserInfo = apiLogin;
}
}
//三星鍵盤系統(tǒng)bug
public void sanxinBug() {
try {
Class cls = Class.forName("android.sec.clipboard.ClipboardUIManager");
Method m = cls.getDeclaredMethod("getInstance", Context.class);
m.setAccessible(true);
m.invoke(null, this);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
/**
* 新建了一個activity
*
* @param activity
*/
public void addActivity(Activity activity) {
activities.add(activity);
}
/**
* 結(jié)束指定的Activity
*
* @param activity
*/
public void finishActivity(Activity activity) {
if (activity != null) {
this.activities.remove(activity);
activity.finish();
activity = null;
}
}
/**
* 應(yīng)用退出春缕,結(jié)束除了main所有的activity
*/
public void exitNoMain() {
for (Activity activity : activities) {
if (activity != null) {
if (activity instanceof MainActivity) {
} else {
activity.finish();
}
}
}
}
/**
* 應(yīng)用退出实牡,結(jié)束所有的activity
*/
public void exit() {
for (Activity activity : activities) {
if (activity != null) {
activity.finish();
}
}
}
private class MyActivityLifecycleCallbacks implements ActivityLifecycleCallbacks {
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
GApplication.getInstance().addActivity(activity);
}
@Override
public void onActivityStarted(Activity activity) {
}
@Override
public void onActivityResumed(Activity activity) {
}
@Override
public void onActivityPaused(Activity activity) {
}
@Override
public void onActivityStopped(Activity activity) {
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
}
@Override
public void onActivityDestroyed(Activity activity) {
GApplication.getInstance().finishActivity(activity);
}
}
}