0

ジェネリック メソッド、つまりsayHello(a)、引数strを仮パラメータとして受け取ると仮定します。

new Thread(new Runnable() {

    @Override
    public void run() {
        String str = "Hello World";
        sayHello(str);
    }           
}).start();

sayHello(str)このスレッドの外側 (または、さらに重要なことは、メイン スレッドの内側) で実行String str = "Hello World";する必要がありますが、この新しいスレッド内で実行する必要があります。では、この問題を解決するにはどうすればよいでしょうか。

4

4 に答える 4

0
new Thread(new Runnable() {

  @Override
  public void run() {
      final String str = "Hello World";

      runOnUiThread(new Runnable()
      {
          public void run()
          {
              sayHello(str);
          }
      });
  }

}).start();
于 2013-03-21T04:53:36.107 に答える
0

を使用しjava.util.concurrent.FutureTaskます。

JDK6APIドキュメントから。

 interface ArchiveSearcher { String search(String target); }
 class App {
   ExecutorService executor = ...
   ArchiveSearcher searcher = ...
   void showSearch(final String target) throws InterruptedException {
     Future<String> future = executor.submit(new Callable<String>() {
         public String call() { return searcher.search(target); }
     });
     displayOtherThings(); // do other things while searching
     try {
       displayText(future.get()); // use future
     } catch (ExecutionException ex) { cleanup(); return; }
   }
 }
于 2013-03-21T04:54:54.333 に答える
0

この同様の質問「Android runOnUiThread が終了するのを待つ方法は?」 の回答を確認してください。問題を解決する BlockingOnUIRunnable クラスの実装が含まれています。また、sayHello() 関数を同期的に実行します。

于 2013-03-21T05:30:01.323 に答える
0

メイン スレッドで宣言strし、新しいスレッドで値を割り当てると、メソッドを呼び出すことができますsayHello

于 2013-03-21T04:49:15.497 に答える