android獲取當前棧頂的activity
阿新 • • 發佈:2019-01-08
在Application的onCreate方法中:
@Override public void onCreate() { registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() { @Override public void onActivityCreated(Activity activity, Bundle savedInstanceState) { } @Override public void onActivityStarted(Activity activity) { } @Override public void onActivityResumed(Activity activity) { MyActivityManager.getInstance().setCurrentActivity(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) { } }); }
建立一個ActivityManager類
public class MyActivityManager { private static MyActivityManager sInstance = new MyActivityManager(); private WeakReference<Activity> sCurrentActivityWeakRef; private Object activityUpdateLock = new Object(); private MyActivityManager() { } public static MyActivityManager getInstance() { return sInstance; } public Activity getCurrentActivity() { Activity currentActivity = null; synchronized (activityUpdateLock){ if (sCurrentActivityWeakRef != null) { currentActivity = sCurrentActivityWeakRef.get(); } } return currentActivity; } public void setCurrentActivity(Activity activity) { synchronized (activityUpdateLock){ sCurrentActivityWeakRef = new WeakReference<Activity>(activity); } } }
在需要獲取當前應用棧頂activity時
MyActivityManager.getInstance().getCurrentActivity();
這樣就獲取到當前棧頂的activity了