2

私のプロジェクトでは、別のスレッドでサーブレットへのネットワーク呼び出しをいくつか作成しました。そのスレッドが開始する前に、待機の進行状況としてスピナーを表示します。そのネットワーク スレッドが終了するまで、waitprogress が画面に表示され、サーバーから応答を受信したら、プログレス バーの dispose() メソッドを明示的に呼び出してそのプログレス バーを破棄する必要があります。そのため、ネットワークの強度が低下しているときに GPRS 接続を確立する呼び出しを行うたびに、これは少し複雑です。IO 例外をスローするか、waitprogress を破棄し、エラー メッセージを表示して続行するサーバーからの応答を受信するのに約 2 ~ 3 分かかることがあります。

上記のシナリオは複雑です。なぜなら、ユーザーは応答を得るためにこれほど長く待たないからです。ネットワークスレッドを呼び出してプログレスバーを表示するたびに、ユーザーがネットワークスレッドを含むすべての操作をキャンセルし、以前の状態に戻って、接続がないか接続が悪い場合に別の呼び出しを行うことができるようにする方法が必要です。

ここでは、Lwuit を使用しています。

4

1 に答える 1

2

NetworkManager クラスでは、この関数を追加して、クラスからアクティブにすることができます

lwuit がアプリケーションのオープン コードにある場合にのみ、次の関数を追加できます。

 public void killAll() {
            for (int i = 0; i < pending.size(); i++) {
                ((ConnectionRequest) pending.elementAt(i)).kill();
            }
            pending.removeAllElements();
            for (int i = 0; i < networkThreads.length; i++) {
                networkThreads[i].currentRequest.kill();
            }
        }

この後または前に、dispose() メソッドを呼び出す必要があります。

于 2012-12-20T09:38:46.100 に答える