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