Android 安卓:Can';不可能控制2+;通过单个计时器加载活动数据

Android 安卓:Can';不可能控制2+;通过单个计时器加载活动数据,android,performance,timer,Android,Performance,Timer,我有4个活动。在每个活动中,我使用一个计时器每分钟加载数据。现在我在4个活动中使用4个计时器。现在我想要的是,是否可以控制从一个计时器加载的所有4个活动数据。?如果可能,请举例说明 谢谢……是的,您可以在后台执行此操作,并通过直接更新GUI或植入观察者模式将更新推送到您的活动中 我现在有一个完全有效的例子,它可能会帮助您。好的,首先创建一个可观察类,如下所示: public class MyObservable extends Observable { int n = 0;

我有4个活动。在每个活动中,我使用一个计时器每分钟加载数据。现在我在4个活动中使用4个计时器。现在我想要的是,是否可以控制从一个计时器加载的所有4个活动数据。?如果可能,请举例说明


谢谢……

是的,您可以在后台执行此操作,并通过直接更新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));
    }
}