0

Android アプリケーションの開発に Titanium スタジオを使用しています。ユーザーがアイテムをクリックすると、サイトからデータを取得してテーブルビューにデータを入力する新しいウィンドウが開かれます。そのため、このウィンドウが開くまでに時間がかかります。私がデータを取得していて、ロード画面を次のように表示している間を意味します。

anotherWind.addEventListener('open', function (e) {
      activityIndicator.show();

      setTimeout(function(){
    e.source.close();
    activityIndicator.hide();
  }, 6000);
});

問題は、この時点で、テーブルビューを取得して表示するのに6秒かかると想定していることです。ただし、データによって時間が異なる場合があるため、リアルタイムではそうではない場合があります

ユーザーがアイコンをクリックすると、データが生成されず、テーブルビューに表示されない場合にのみ、読み込み画面が表示されます。

2 つのタスク間の一種の通知です。タスクが完了したら、他の人に通知する必要があります。
どうすれば解決できますか?

4

3 に答える 3

1

カスタム イベント リスナーを使用できます。例:

Ti.App.addEventListener('tableDataLoaded', function() {
     activityIndicator.hide();
}

テーブル データが読み込まれると、イベントが発生します。

Ti.App.fireEvent('tableDataLoaded');

これがお役に立てば幸いです:)

于 2012-12-13T09:47:25.630 に答える
0

マルチスレッドが良い解決策になるようです。Android は、異なるスレッドまたはプロセス間の通信メカニズムを提供します。

于 2012-12-10T07:14:14.183 に答える
0

私は同じことを実装しました。私の新しいウィンドウは、リモートデータをロードしてテーブルビューを作成する必要があります。

だから私はウィンドウが開いているときにインジケーターを表示するだけです

anotherWind.addEventListener('open', function (e) { activityIndicator.show(); });

リモートデータがロードされたときに非表示にします。httpclient のコールバック内

'APIGetRequest(this.apiURL, function(e) {
    var status = this.status;
    if (status == 200) {
              populatetableview(this.responseText);
              activityIndicator.hide();
             }

});'

于 2012-12-14T11:14:58.993 に答える