1

アクティビティにソケット接続が開いているスレッドがあります。スレッドをグローバルに使用して、他のアクティビティのスレッドからデータを取得できるようにします。バックグラウンドで実行するようなもの...

誰かが私に解決策や例を持っていますか?

ありがとう。

4

3 に答える 3

4

あなたはサービスを探しています

またはこのコードを試してください

void runInBackground() {
            new Thread(new Runnable() {
                @Override
                public void run() {
                    // DO your work here
                    // get the data
                    if (activity_is_not_in_background) {
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                //uddate UI
                            }
                        });
                    }
                    runInBackground();
                }
            });
        }

Async Task を使用する 3 つ目の方法 - AsyncTaskについて

于 2013-10-02T19:21:15.327 に答える
1

複数のアクティビティがこのスレッドにアクセスできるようにする場合は、スレッドを実行する Vaibs_cool のサンプルを組み合わせます (これは通常のスレッドであり、Android 固有のものではありません)。

アプリケーションを拡張し(マニフェストにエントリを作成)、そのスレッドをそこに配置します。

そうすれば、あなたのすべての活動はそれと話すことができます。

于 2013-10-02T19:24:42.453 に答える
0

次の 2 つのオプションがあります。

ソケットをオープンし、Activity close 使用後もオープンにしたい場合Service

一方、アクティビティの実行中にソケットを開き、アクティビティの終了時に閉じる場合は、使用しますAsyncTask

使用方法の例を見つけることができますAsyncTask here

ドキュメントから:

ネットワーク操作には、予測できない遅延が発生する可能性があります。これによりユーザー エクスペリエンスが低下するのを防ぐには、常に UI とは別のスレッドでネットワーク操作を実行します。AsyncTaskクラスは、UI スレッドから新しいタスクを起動する最も簡単な方法の 1 つを提供します。

于 2013-10-02T19:19:13.977 に答える