1. 程式人生 > >Android中獲取當前正在顯示的Activity

Android中獲取當前正在顯示的Activity

1.監聽Activity的生命週期

在Application的onCreate方法中監聽Activity的生命週期
 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) {

            }
        });

2.儲存當前Activity的狀態

package cn.uniwa.uniwa.util;

import android.app.Activity;

import java.lang.ref.WeakReference;

/**
 * Created by zhoujian on 2018/1/19.
 */

public class MyActivityManager {
    
    private static MyActivityManager sInstance = new MyActivityManager();
    
    private WeakReference<Activity> sCurrentActivityWeakRef;


    private MyActivityManager() {

    }

    public static MyActivityManager getInstance() {
        return sInstance;
    }

    public Activity getCurrentActivity() {
        Activity currentActivity = null;
        if (sCurrentActivityWeakRef != null) {
            currentActivity = sCurrentActivityWeakRef.get();
        }
        return currentActivity;
    }

    public void setCurrentActivity(Activity activity) {
        sCurrentActivityWeakRef = new WeakReference<Activity>(activity);
    }

}


3.使用場景

在服務中實時彈出被擠掉的對話方塊,就需要獲取當前的Activity