当前开发中需要中用到工厂模式,需要在其中一个模块用到当前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的状态
public class MyActivityManager {
private static MyActivityManager mInstance = new MyActivityManager();
private WeakReference<Activity> sCurrentActivityWeakRef;
public MyActivityManager(){
}
public static MyActivityManager getInstance(){
return mInstance;
}
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 = MyActivityManager.getInstance().getCurrentActivity();
转载自:https://blog.csdn.net/u014005316/article/details/79142625