2013-05-17 36 views
3

我打开一个捕获图像和OnActivityResult的意图,我调用一个AsyncTask开始对图像进行一些处理。问题是我想先加载mainActivity,然后启动AsyncTask以查看AsyncTask的百分比。我怎样才能做到这一点?如何在ActivityResult上启动一个AsyncTask并在MainActivity上显示

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) { 
     if (resultCode == RESULT_OK) { 
      try { 
      rotationIfNeeded(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      Log.v(TAG, "C"); 

      retrievePreferences(); 
      OcrAsyncTask aTask = new OcrAsyncTask(dialog, languageCode, languagePath, bitmap); 
      aTask.execute(languagePath); 

      while (aTask.doInBackground(languagePath)){ 
       //Do Nothing 
      } 

      recognizedText = aTask.getRecognizedText(); 
      Log.v(TAG, "The Recognized Text is = " + aTask.getRecognizedText()); 
      if (recognizedText.length() != 0) { 
       ocrResult.setText(ocrResult.getText().toString().length() == 0 ? recognizedText : ocrResult.getText() + " " + recognizedText); 
       ocrResult.setSelection(ocrResult.getText().toString().length()); 
      } 

     } else if (resultCode == RESULT_CANCELED) { 
      Toast.makeText(this, "Picture was not taken", Toast.LENGTH_SHORT); 
     } else { 
      Toast.makeText(this, "Picture was not taken", Toast.LENGTH_SHORT); 
     } 
    } 
} 
+0

开始MainActiviy并让MainActivity启动AsyncTask – Blackbelt

+0

开始Mai OnActivityResult中的nActivity和MainActivity onCreate()中的启动AsyncTask。 –

+0

我如何在onActivityResult中启动MainActivity? –

回答

1

有这个在您的MainActivity

private class MyAsyn extends AsyncTask<Boolean, Void, Object> { 
    private ProgressDialog pd; 

    /** application context. */ 
    public MyAsyn(Activity activity) { 
     pd = new ProgressDialog(activity); 
    } 

    protected void onPreExecute() { 
     pd.setMessage("Loading.. Please wait"); 
     pd.show(); 
    } 

    @Override 
    protected String doInBackground(Boolean... urls) { 

     pd.show(); 

     // do what you want to do in back ground 

     return null; 
    } 

      @Override 
    protected void onProgressUpdate(Void... values) { 
     // TODO Auto-generated method stub 
     super.onProgressUpdate(values); 
        // code to notify the progress 
    } 

    @Override 
    protected void onPostExecute(Object result) { 
     pd.dismiss(); 
    } 
} 

您OnActivityResult方法中添加此

MyAsyn task = new MyAsyn(MainActivity.this); 
task.execute(true); 

等活动结果返回您的处理,由OnActivityResult启动背景

相关问题