2012-01-09 8 views
2

私のアプリケーションが起動すると、私はAsynタスク関数を呼び出しています。バックグラウンドプロセスでは、3つのAPIとその解析関数が実行され、10分ほどかかります。ブロックアンドロイド戻るボタンAsynタスク実行中

この場合、ユーザーがAndroidのデフォルトの戻るボタンをクリックすると、asynタスクがキャンセルされていました。これを避けるために、私は以下のようにバックボタンアクションをブロックしようとしました。

class First_Time_Sync extends AsyncTask<Void, Void, Void> 
    { 
     ProgressDialog dialog1 = new ProgressDialog(Progressss.this); 

     protected void onPreExecute() 
     { 
      backMode = true; 
      dialog1.setMessage("Welcome \nThank you for waiting."); 
      dialog1.setIndeterminate(true); 
      dialog1.show(); 
     }  

     protected Void doInBackground(Void... arg0) 
     { 
      .................     
      return null; 
     } 

     protected void onPostExecute(Void unused) 
     { 
      backMode = false; 
      dialog1.dismiss(); 
     } 
    } 

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) 
    { 
     if (keyCode == KeyEvent.KEYCODE_BACK) 
     { 
      if (backMode) 
      { 
       return true; 
      } 
      else 
      { 
       return super.onKeyDown(keyCode, event); 
      } 
     }  
     return super.onKeyDown(keyCode, event); 
    } 

非同期タスク関数が呼び出され、ユーザーが戻るボタンをクリックすると、進行状況バーがキャンセルされます。しかし、バックグラウンド・プロセスが進行し、バック・ボタンはバックグラウンド・プロセスが完了するまでブロックされています。

戻るボタンを押しても進行状況バーが表示され、消滅しないようにします。

これを行うにはどのように

......

+0

10分をキャンセルから、キーをバック防ぐことができますが、バックボタンをブロックし、進行状況ダイアログの表示を持っているには長すぎます。たぶんあなたはバックグラウンドサービスであなたの仕事をする必要がありますか? – barry

答えて

4

あなたが偽

dialog1.setCancelable(偽)に、ダイアログのcancelableプロパティを設定する必要があります。

これはあなたのダイアログ

+0

ありがとう@nandeesh。その作品:) –

関連する問題