Java 当应用程序处于后台时,如何更新收到的回调的UI?

Java 当应用程序处于后台时,如何更新收到的回调的UI?,java,android,reflection,mvp,Java,Android,Reflection,Mvp,我正在使用MVP架构创建一个android应用程序。我已经创建了Presenter和Interactior类。当应用程序位于后台并返回前台时,我正在努力更新UI 让我们考虑下面的场景。 单击UI上的按钮,并通知演示者。演示者要求Interactor从后端提供数据。当Interactor将结果提供给演示者时,UI已经在后台了。一旦应用程序出现在前台,我如何保存它的状态并更改UI组件 我试着做了以下几件事: 使用标志打开标志并签入onResume以调用在收到回调时应该调用的方法。但问题是,假设我有5

我正在使用MVP架构创建一个android应用程序。我已经创建了Presenter和Interactior类。当应用程序位于后台并返回前台时,我正在努力更新UI

让我们考虑下面的场景。

单击UI上的按钮,并通知演示者。演示者要求Interactor从后端提供数据。当Interactor将结果提供给演示者时,UI已经在后台了。一旦应用程序出现在前台,我如何保存它的状态并更改UI组件

我试着做了以下几件事:

使用标志打开标志并签入onResume以调用在收到回调时应该调用的方法。但问题是,假设我有5个不同的服务可以被具有不同回调的presenter调用,那么我需要5个我不喜欢的标志 使用JAVA反射存储HashMap中要调用的方法的名称,并带有参数
有没有更好的方法来实现这一点?

您可以为演示者添加一些暂停逻辑:

每当UI转到后台时,您都会告诉演示者暂停,并将接收到的任何数据保存到缓存中,这可以像演示者中的列表一样简单。 每当UI返回前台时,您都会告诉演示者取消暂停,并将其缓存卸载到UI中。如果缓存列表不为空,它会将缓存推送到UI中,就像交互者收到的常规响应一样
正如MVP建议的那样,模型视图演示者 模型:模型负责getter setter方法,也称为POJO。 视图:包含带有视图的活动/片段。 演示者:实际的业务逻辑,您可以在其中与网络调用通信或与后端数据库(如SQLite/MySql)关联

单击按钮时,您需要调用presenter,presenter将在完成后执行后台任务,您需要通过在界面帮助下完成的回调通知您的视图响应成功/失败

例如:

interface BaseContract {
        interface BaseView {
            //Methods for View
            void onDoSomething();
        }

        interface BasePresenter {
            void doSomething();

        }
    }

    class BaseMainPresenter implements BaseContract.BasePresenter {
        BaseContract.BaseView view;

        BaseMainPresenter(BaseContract.BaseView view) {
            this.view = view;
        }

        @Override
        public void doSomething() {
            if (view != null)
                view.onDoSomething();
        }
    }

    class DemoClass implements BaseContract.BaseView {

        //Create object of Presenter 

        /****
         * Example :
         * BaseMainPresenter baseMainPresenter = new BaseMainPresenter(this);
         */
        @Override
        public void onDoSomething() {
            //Deal with Context here.
        }
    }

订阅BehaviorRelay或Responsive数据库,该数据库在您订阅当前显示的数据的初始状态或未来的任何时候都会为您提供与该数据相关的响应changes@EpicPandaForce你能举个例子吗?