0

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

4

2 回答 2

1

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

阅读维基百科上的观察者模式(带有 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);
            }
        }
    }

}
于 2013-10-27T01:39:21.880 回答
0

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

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

像这样定义它:

public static int progress = 0;

像这样阅读它:

int getprogress = JavaClassName.progress;
于 2013-10-26T23:18:02.647 回答