2

アプリでいくつかの IO 操作を実行するために、スレッドを作成しました。run メソッドには何もありませんが、void write(String filename, String data) や void create(String filename) などの他のメソッドがいくつかあり、すべて機能します。魔法のように。私の質問は、このスレッドがバックグラウンドまたはこのようなもので実行されていると思っていましたが、メインアクティビティの .run() ステートメントを削除した後も、上記のメソッドを呼び出すことは引き続き機能するため、スレッドを実行して待機させるにはどうすればよいですか?アプリをブロックせずにアクティビティからのメッセージ? そして 2 番目の質問は、メソッドがまだ機能しているため、メイン アクティビティから呼び出したときにメイン UI スレッドで実行されているということですか?

4

3 に答える 3

3

start()の代わりに メソッドを使用する必要がありrun()ます。

呼び出し元のスレッドでrun()指定されたを実行しています。Runnable

これstart()を処理する新しいスレッドを開始していますRunnable

于 2012-09-06T06:55:50.090 に答える
2

上記のスレッドでメソッドを実行するには、他のスレッドからではなく、スレッドからメソッドを呼び出す必要があります。

class WorkerThread extends Thread {
      public Handler mHandler;

      public void run() {
          Looper.prepare();

          mHandler = new Handler() {
              public void handleMessage(Message msg) {
                  // process incoming messages here
              }
          };

          Looper.loop();
      }
  }

次に、WorkerThread.mHandler.postRunnableorsendMesssageを使用して、別のスレッドで作業を実行します。

于 2012-09-06T06:56:58.303 に答える
1

配信時にものを処理するためのキューを作成するには、利用可能な最良のオプションである Android のネイティブのものを利用する必要があります。

  • ハンドラスレッド
  • ルーパー
  • ハンドラ
  • メッセージ

例として、これこれを読んでください。

于 2012-09-06T06:57:40.130 に答える