私は4つのアクティビティを持っています。今私は4つの活動で4つのタイマーを使用しています。今私が欲しいのは、1つのタイマーから4つのアクティビティデータロードをすべて制御できるかどうかです。もしpossileがこれの例を挙げるならば。Android:1つのタイマーで2つ以上のアクティビティデータを読み込むことはできません
おかげで....
私は4つのアクティビティを持っています。今私は4つの活動で4つのタイマーを使用しています。今私が欲しいのは、1つのタイマーから4つのアクティビティデータロードをすべて制御できるかどうかです。もしpossileがこれの例を挙げるならば。Android:1つのタイマーで2つ以上のアクティビティデータを読み込むことはできません
おかげで....
はい、あなたがバックグラウンドでそれを行うと、直接GUIを更新するか、Observerパターンを注入することにより、いずれかのあなたの活動への更新をプッシュすることができます。
私は今あなたを助けるかもしれない完全に動作する例を持っています。 [OK]を最初に、このような何か観測クラスを作成します。
public class MyObservable extends Observable {
int n = 0;
public void setValue(int n) {
setChanged();
notifyObservers(n);
}
public int getValue()
{
return n;
}
}
を、タスクを作成し、あなたがあなたをパラメータ修正する必要があり、私は怠け者:)
public class MyTask extends AsyncTask
{
MyObservable observable;
int numberOfNotifications = 0;
@Override
protected Object doInBackground(Object... params) {
try {
this.observable = (MyObservable) params[0];
while (true) {
numberOfNotifications++;
int timeSinceLastUpdate = 1000*5;
Thread.sleep(timeSinceLastUpdate);
publishProgress(numberOfNotifications);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onProgressUpdate(Object... values) {
observable.setValue((Integer) values[0]);
}
}
その後は、アプリケーションを拡張することができますクラスとそこにスレッドを起動します。ここで注意すべき
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;
}
}
ことの一つは、あなただけの観察可能の1つのインスタンスを取得することを確認するために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));
}
}
これは動作するはずですし、あなたが別の活動でこのパターンを使用するように習慣場合だけオブザーバーを追加し、更新メソッドをオーバーライドすることを忘れないでください。あなたがそれを動作させるか、この例を使用していくつかの問題がある場合は、コメントしてください。
ここでは、1つのタイマーで4つのアクティビティを制御できます。つまり、すべての4つのアクティビティに共通のタイマーでデータをロードすることができます。 –
はい、4つのアクティビティにObserverを実装したり、4つのアクティビティを直接更新したりできます。私はObserverのために私の自己必要性のための例を行くだろうか? – DNRN
ya私は正しく実装するための例が必要です...多くのお礼 –