分享片段之间的进度

时间:2013-10-26 23:11:34

标签: java android

我有几个片段。其中一个可以启动IntentService以进行繁重的操作。问题是,从另一个片段获得后台任务的进度/状态的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

如果你想要callback机制之类的东西,你可以为它实现类似Observer的架构/模式。

阅读Observer pattern on wikipedia(使用Java样本)

以下是我的样本:

public class ObservableProgress {

    public interface Observer {
        void onProgressChanged(Object newProgress);
    }

    // I do not know the type of your progress
    private static volatile Object progress;

    private static final List<Observer> observers = new LinkedList<Observer>();

    // closing constructor for clear class's api
    private ObservableProgress() {}

    // on each progress change, all observers would be notified about progress change
    public static void setProgress(Object newProgress) {
        progress = newProgress;
        notifyOnProgressChanged(newProgress);
    }

    public static Object getProgress() {
        return progress;
    }

    // use it to add progress listener
    public static void addObserver(Observer observer) {
        observers.add(observer);
    }

    // use it to remove progress listener
    public static void removeObserver(Observer observer) {
        observers.remove(observer);
    }

    private static void notifyOnProgressChanged(Object newProgress) {
        for (Observer observer : observers) {
            if (observer != null) {
                observer.onProgressChanged(newProgress);
            }
        }
    }

}

答案 1 :(得分:0)

在您的服务中,您应该定义基于状态更改值的静态变量。然后,您可以从片段中读取这些变量。

你可以拥有一个从0到100的int。

像这样定义:

public static int progress = 0;

这样读:

int getprogress = JavaClassName.progress;