在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 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时

MyActivityManager.getInstance().getCurrentActivity();

这样就获取到当前栈顶的activity了

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐