在MainActivity中获取服务结果

时间:2017-07-15 20:32:17

标签: android progress-bar android-service

如何持续从服务获取UI或MainActivity的结果。?

我正在使用服务复制一些大文件,我想更新Foreground中的进度条。

1 个答案:

答案 0 :(得分:0)

最简单的方法是将Singleton对象与侦听器一起使用。 订阅活动更新,只需在服务中设置值。

public class ProgressSingleton {
    private static ProgressSingleton instance;

    private ProgressListener progressListener = null;

    public static void initInstance() {
        if (instance == null) {
            instance = new ProgressSingleton();
        }
    }

    public static ProgressSingleton getInstance() {
        return instance;
    }

    private ProgressSingleton() {
    }

    public void setProgress(int progress) {
        if (progressListener != null) {
            progressListener.onProgressUpdated(progress);
        }
    }

    public interface ProgressListener {
        void onProgressUpdated(int progress);
    }
}

确保您在UI线程中处理来自侦听器的更新。 您也可以在前台启动服务,这是大文件的最佳选择。