我有几个片段。其中之一可以启动 IntentService 进行繁重的操作。问题是,从另一个片段中获取该后台任务的进度/状态的最佳方法是什么?
问问题
54 次
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 回答