美文网首页
android获取栈顶activity的方法

android获取栈顶activity的方法

作者: xbase | 来源:发表于2017-08-23 15:38 被阅读624次

    该方法支持需要api14或以上。
    1.重写Application,并使用registerActivityLifecycleCallbacks方法接收activity的回调。

    public class MyApplication extends Application {
    
      @Override public void onCreate() {
        super.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) {
    
          }
        });
      }
    }
    

    2.MyActivityManager使用weakReference,以防内存泄漏。

    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 activity = MyActivityManager.getInstance().getCurrentActivity();
    

    相关文章

      网友评论

          本文标题:android获取栈顶activity的方法

          本文链接:https://www.haomeiwen.com/subject/qhoddxtx.html