項(xiàng)目在開(kāi)發(fā)的時(shí)候 有單點(diǎn)登錄的功能要做
項(xiàng)目中有 支付寶 微信充值 主要是 支付寶充值 如手機(jī)中沒(méi)有支付寶應(yīng)用 就在應(yīng)用內(nèi)打開(kāi)h5的支付寶充值頁(yè)面 這就涉及到 第三方sdk 中的activity關(guān)閉問(wèn)題
注冊(cè) ActivityLifecycleCallbacks 監(jiān)聽(tīng)?wèi)?yīng)用內(nèi)所有 Activity的生命周期
public class GApplication extends Application {
//記錄當(dāng)前棧里所有activity
private List<Activity> activities = new ArrayList<Activity>();
//記錄需要一次性關(guān)閉的頁(yè)面
private List<Activity> activitys = new ArrayList<Activity>();
private static GApplication instance;
DataBaseHelper dbHelper;
private SharedPreferencesUtil sharedPreferencesUtil;
//聲明AMapLocationClient類對(duì)象
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);
}
/**
* 獲得實(shí)例
*
* @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)的頁(yè)面統(tǒng)計(jì)方式
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;
}
}
//三星鍵盤(pán)系統(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();
}
}
/**
* 新建了一個(gè)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);
}
}
}