私はAndroidプログラミングにまったく慣れていないので、今少し問題があります。
Siemens PLC の DB から定期的にデータを取得するアプリを構築しています。さまざまなデータ型に対して、タブ ビューにさまざまなタブがあります。タブがアクティブな場合にのみ、タブごとに特定のデータを更新しようとしました。今のところ、変更ごとに 1 回、onTabChanged メソッドでそれらを更新します。これはうまくいきます。
今、定期的に更新するためのいくつかのソリューション(thisまたはthisなど)を試しましたが、うまくいきませんでした。「最良の」解決策は、Whil(true) ステートメントを使用したもので、データが 5 秒ごとに更新されましたが、アプリを強制的にシャットダウンした場合を除いて、UI を更新せず、ループを離れませんでした。
答えが正しい限り、私の問題は、メインスレッドでUIを更新したいということです。PLC からデータを読み取る関数と、タブの項目にデータを書き込む関数があります。読み取り関数は、「loginactivity」からインテントとして渡されるクラスからのデータを必要とするため、タブビューを含むアクティビティの oncreate メソッドにあるインテントが呼び出されるまで呼び出すことができません。
タブがアクティブである限り、現在 ontabchanged で正常に動作するコード行を 5 秒ごとに実行する可能性はありますか? 前に述べたように、インテントから渡されたクラス ファイルを必要とする読み取り関数と、データを書き込む関数が 1 つあります。このatmのように見えます:
Bundle data = getIntent().getExtras();
final Login_Data logindata = data.getParcelable("logindata");
tabHost.setOnTabChangedListener(new OnTabChangeListener() {
@Override
public void onTabChanged(String tabId) {
if (tabId == "Anzeige1") {
Anzeigedatenlesen(logindata);
Anzeigeschreiben();
} else if (tabId == "Anzeige2") {
System.out.println("Anzeige2");
} else if (tabId == "Anzeige3") {
System.out.println("Anzeige2");
}
}
});