安卓獲取當前的Activity即CurrentActivity
阿新 • • 發佈:2018-11-02
安卓獲取當前的Activity即CurrentActivity有兩種方法:
1.
在BaseActivity中 宣告一個 :private static volatile Activity mCurrentActivity;
public static Activity getCurrentActivity() { return mCurrentActivity; } private void setCurrentActivity(Activity activity) { mCurrentActivity = activity; }
在BaseActivity中的OnResume()方法中:
setCurrentActivity(this);
這樣在外圍直接獲取就可以:
Activity currentActivity = BaseActivity.getCurrentActivity();
如果想判斷比如:MainActivity是不是CurrentActivity 使用方法:
BaseActivity.getCurrentActivity() instanceof MainActivity 使用 instanceof 進行判斷
第二種方法:
在CCApplication中定義一個:
private volatile Activity mCurrentActivity;並且新增get set方法
public synchronized Activity getCurrentActivity() { return mCurrentActivity; } public synchronized void setCurrentActivity(Activity activity) { mCurrentActivity = activity; }
然後宣告一個類:
private class CCActivityLifecycleCallbacks implements ActivityLifecycleCallbacks { @Override public void onActivityCreated(Activity activity, Bundle savedInstanceState) { } @Override public void onActivityStarted(Activity activity) { MonkeyLog.d(TAG, "onActivityStarted :" + activity); } @Override public void onActivityResumed(Activity activity) { mIsInForeground = true; Adjust.onResume(); setCurrentActivity(activity); } @Override public void onActivityPaused(Activity activity) { mIsInForeground = false; Adjust.onPause(); setCurrentActivity(null); } @Override public void onActivityStopped(Activity activity) { } @Override public void onActivitySaveInstanceState(Activity activity, Bundle outState) { } @Override public void onActivityDestroyed(Activity activity) { } }
在CCApplication的 onCreate()方法中呼叫:
registerActivityLifecycleCallbacks(new CCActivityLifecycleCallbacks());
在外圍用的時候直接呼叫Get方法即可:
ActivityUtil.runOnUiThread(new Runnable() { @Override public void run() { Activity currentActivity = CCApplication.getInstance().getCurrentActivity(); if (currentActivity != null) { // TODO: 2018/8/15 } } });
個人GitHub地址:https://github.com/HuaDanJson 歡迎關注