2011-11-21 13 views
7

पर वापस लौटें मेरे पास एक AsyncTask है और मैं बैक बटन दबाए जाने पर निष्पादन को रोकना चाहता हूं। मैं यह भी चाहता हूं कि ऐप पिछली प्रदर्शित गतिविधि पर वापस आ जाए। ऐसा लगता है कि मैंने कार्य को रोकने में कामयाब रहा है लेकिन ऐप पिछली गतिविधि पर वापस नहीं आ रहा है। कोई विचार? यह मेरे कोडएंड्रॉइड - बैक बटन दबाए जाने पर AsyncTask को रोकें और पिछली गतिविधि

private class MyTask extends AsyncTask<Void, Void, Void> implements OnDismissListener{ 
    private boolean exception= false; 

    @Override 
    protected void onPreExecute(){ 
     pd = ProgressDialog.show(
       IscrizioniActivity.this, 
       "Please wait...", 
       "Loading the data", 
       true, 
       true, 
       new DialogInterface.OnCancelListener(){ 
        public void onCancel(DialogInterface dialog) { 
         MyTask.this.cancel(true); 
        } 
       } 
     ); 
    } 

    @Override 
    protected Void doInBackground(Void... voids) { 
     //do something 
     return (null); 
    } 

    @Override 
    protected void onPostExecute(Void voids) { 
     pd.dismiss(); 
     //do something 

    } 

    public void onDismiss(DialogInterface dialog) { 

     this.cancel(true); 
    } 

} 

सम्मान से निकाला गया है।

+0

इस जवाब में मदद मिल सकती -> http://stackoverflow.com/questions/7993023/स्टॉप-ए-थ्रेड-डाउनलोडिंग-इमेजेस-जब-गतिविधि-फिनिश/79 9 3176 # 79 93176 – guleryuz

उत्तर

7
pd.setCancelable(true); 
    pd.setOnCancelListener(cancelListener); 
    bCancelled=false; 

pd is your progressdialog box 

और अब cancelListner

OnCancelListener cancelListener=new OnCancelListener(){ 
    @Override 
    public void onCancel(DialogInterface arg0){ 
     bCancelled=true; 
     finish(); 
    } 
}; 
+1

यह आंशिक रूप से चाल है। मैंने रद्द किया है "OnDismissListner लागू करता है" और OnDismiss विधि। और कैंसल में फिनिस() जोड़ा। – lugeno

+0

bCancelled क्या है? – Pradeep

+0

@pradeep यह बूलियन जांचने के लिए प्रयोग किया जाता है कि यह रद्द है या नहीं –

1

आप onDismiss() विधि में एक finish() कॉल जोड़ने की कोशिश की है:

public void onDismiss(DialogInterface dialog) { 
    this.cancel(true); 
    IscrizioniActivity.this.finish(); 
} 
+0

इस विधि का प्रयास किया लेकिन चाल नहीं की। – lugeno

2

अपनी गतिविधि में, बैक बटन को ओवरराइड, उस में AsyncTask बंद करो, और वर्तमान गतिविधि के लिए खत्म कहते हैं।

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     MyTask.cancel(); 
     IscrizioniActivity.this.finish(); 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 
+0

MyTask.stop के साथ आपका क्या मतलब है? ऐसी कोई विधि नहीं। – lugeno

+0

अब समस्या YourCurrentActivity.finish() पर है। गतिविधि – lugeno

+0

प्रकार से गैर स्थैतिक विधि खत्म() के लिए एक स्थिर संदर्भ नहीं बना सकता है। मुझे इसे फिनिस() से पहले रखना था। अब मैं जांच करूंगा कि यह काम करता है या नहीं। – lugeno

1

का उपयोग इस एक का प्रयास करें ...

progress_dialog.setCancelable(true); 
progress_dialog.setOnCancelListener(new OnCancelListener() { 

    @Override 
    public void onCancel(DialogInterface dialog) { 
     // TODO Auto-generated method stub 
     YourActivity.this.finish(); 
     } 
    }); 
संबंधित मुद्दे