Android 安卓:Can';不可能控制2+;通过单个计时器加载活动数据
我有4个活动。在每个活动中,我使用一个计时器每分钟加载数据。现在我在4个活动中使用4个计时器。现在我想要的是,是否可以控制从一个计时器加载的所有4个活动数据。?如果可能,请举例说明Android 安卓:Can';不可能控制2+;通过单个计时器加载活动数据,android,performance,timer,Android,Performance,Timer,我有4个活动。在每个活动中,我使用一个计时器每分钟加载数据。现在我在4个活动中使用4个计时器。现在我想要的是,是否可以控制从一个计时器加载的所有4个活动数据。?如果可能,请举例说明 谢谢……是的,您可以在后台执行此操作,并通过直接更新GUI或植入观察者模式将更新推送到您的活动中 我现在有一个完全有效的例子,它可能会帮助您。好的,首先创建一个可观察类,如下所示: public class MyObservable extends Observable { int n = 0;
谢谢……是的,您可以在后台执行此操作,并通过直接更新GUI或植入观察者模式将更新推送到您的活动中 我现在有一个完全有效的例子,它可能会帮助您。好的,首先创建一个可观察类,如下所示:
public class MyObservable extends Observable {
int n = 0;
public void setValue(int n) {
setChanged();
notifyObservers(n);
}
public int getValue()
{
return n;
}
}
创建一个任务,你必须正确地参数化你的任务,我只是懒惰:)
然后,您可以扩展应用程序类并在那里启动线程:
public class StackApplication extends Application {
private static MyObservable myObservable;
@Override
public void onCreate() {
super.onCreate();
myObservable = new MyObservable();
new MyTask().execute(myObservable);
}
public static MyObservable getObservable() {
return myObservable;
}
}
这里需要注意的一点是singelton模式,以确保您只获得一个可观察的实例。
那么,在您的相关活动中实施观察者就是小菜一碟了:
public class FirstActivity extends Activity implements Observer {
TextView tvCounter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tvCounter = (TextView) findViewById(R.id.hello);
StackApplication.getObservable().addObserver(this);
}
@Override
public void update(Observable observable, Object data) {
int i = (Integer) data;
tvCounter.setText(Integer.toString(i));
}
}
这应该是可行的,如果您不想在其他活动中使用此模式,请记住添加观察者并覆盖更新方法。如果您使用该示例使其正常工作或遇到一些问题,请发表评论。但是在这里,一个计时器可以控制4个活动。。?我的意思是,对所有4个活动使用公共计时器来加载数据是的,然后您可以在4个活动中实现观察器或直接更新4个活动。我会选择Observer我自己需要一个例子吗?嗨,我正在尝试,但我不知道如何使用Observer类,如何在其中使用计时器,以及如何从中更新UI。这有点混乱。你的一个小小的澄清对我很有用……我给了你一个更完整的例子
public class FirstActivity extends Activity implements Observer {
TextView tvCounter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tvCounter = (TextView) findViewById(R.id.hello);
StackApplication.getObservable().addObserver(this);
}
@Override
public void update(Observable observable, Object data) {
int i = (Integer) data;
tvCounter.setText(Integer.toString(i));
}
}