2016-04-27 20 views
0

2つのメソッドを同時に実行したい。しかし、それは第2の方法の出力のみを示す。手伝って頂けますか?Asynctask android

new AsyncTask<Void, Void, Bitmap>() { 

     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 

     } 
     @Override 
     protected Bitmap doInBackground(Void... params) { 

      Run1(); 
      Run2(); 

      return currentBitmap; 
     } 
     @Override 
     protected void onPostExecute(Bitmap bitmap) { 
      super.onPostExecute(bitmap); 
      if(bitmap!=null) { 

       loadImageToImageView(); 
      } 
     } 
    }.execute(); 
+0

別々のスレッドで各コードセットを実行することをおすすめしますか?全体的にクリーンな実装のために、スレッドのインライン匿名実装を使用できます。 –

答えて

0

常にそれが動作するかどうか、私に教えてください

new AsyncTask<Void, Void, Bitmap>() { 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 

    } 
    @Override 
    protected Bitmap doInBackground(Void... params) { 

     Run1(); 
     Run2(); 

     return currentBitmap; 
    } 
    @Override 
    protected void onPostExecute(Bitmap bitmap) { 
     super.onPostExecute(bitmap); 
     if(bitmap!=null) { 

      loadImageToImageView(); 
     } 
    } 
}.executeOnExecutors(AsyncTask.THREAD_POOL_EXECUTOR); 

スレッドプール上の非同期タスクを実行します。

+0

yourAsyncTaskこれは何ですか? RUN1()して、非同期タスク – xiac

+0

オブジェクト上記のようなRUN2()メソッド。 – Pehlaj

+0

新しいAsyncTask { doInBackground(){} } .executeOnExecutors(AsyncTask.THREAD_POOL_EXECUTOR)の – Pehlaj

1

戦略はあなたの仕事によって異なります。

同時ジョブではAsyncTaskを使用しないでください。これは、デフォルトでは連続して実行されるためです。

UIの変更が必要ない場合、最初の試行はJavaスレッドにすることができます。

あなたは(Runnableを)
  • View.post(Runnableを)
  • View.postDelayed(Runnableを、長い)
    • Activity.runOnUiThreadによってUIスレッドに結果を投稿することができます

      ビットマップイメージを処理するには、HandlerThreadを使用することを検討してください。

    +0

    私はスレッドを試みましたが、ビットマップイメージも使用しました。アンドロイドでスレッドを使用できませんでした。 – xiac

    0

    試してみてください。この

    new AsyncTask<Void, Void, Bitmap>() { 
    
        @Override 
        protected void onPreExecute() { 
         super.onPreExecute(); 
    
        } 
        @Override 
        protected Bitmap doInBackground(Void... params) { 
    
         Run1(); 
         Run2(); 
    
         return currentBitmap; 
        } 
        @Override 
        protected void onPostExecute(Bitmap bitmap) { 
         super.onPostExecute(bitmap); 
         if(bitmap!=null) { 
    
          loadImageToImageView(); 
         } 
        } 
    }.executeOnExecutors(AsyncTask.THREAD_POOL_EXECUTOR); 
    
    +0

    APIを変更する必要があります。intellisenses .executeOnExecutors(AsyncTask.THREAD_POOL_EXECUTOR)現在の分は8です):android.os.AsyncTask#THREAD_POOL_EXECUTOR – xiac

    +0

    asnycタスクを並行して実行する必要があります。 – Pehlaj

    +0

    @ P. Raiその出力は最後の方法です。最初の方法は動作しませんrun1() – xiac

    1

    あなたが使用できる2つのSeprateスレッド

    // Create two threads: 
    
    Thread thread1 = new Thread() { 
    public void run() { 
        Run1(); 
    } 
    

    };

    Thread thread2 = new Thread() { 
    public void run() { 
        Run2(); 
    } 
    

    };

    // Start the both threads. 
    thread1.start(); 
    thread2.start(); 
    
    // Wait for them both to finish 
    thread1.join(); 
    thread2.join();