2013-04-05 82 views
0

对于此代码段(我已排除doInBackground(), postExecute()等) 如何在从CheckServer活动调用异步任务时传递Activity参数?从活动中调用AsyncTask

public class CheckServer extends Activity{ 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 


    HttpTicket ticket= new HttpTicket(); //HOW IS THIS LINE DONE? WHAT PARAM SHOULD BE PASSED? 



    } 

    @SuppressWarnings("unused") 
    private class HttpTicket extends AsyncTask<String, String, String> 
    { 
     private Activity activity; 
     private ProgressDialog dialog; 

     public HttpTicket(Activity activity) { 

      this.activity = activity; 


     } 
+0

创建构造函数HttpTicket(Activity)。 HttpTicket ticket = new HttpTicket(Activity.this); ticket.execute(); – Amit 2013-04-05 08:36:22

回答

0

在你活动的onCreate()

HttpTicket ticket= new HttpTicket(Activity.this); 
//passing context to the asynctask constructor 
ticket.execute(); 
//call execute to laod asynctask 

定义的AsyncTask如下

private class HttpTicket extends AsyncTask<String, String, String> 
{ 
    private Activity activity; 
    private ProgressDialog dialog; 

    public HttpTicket(Activity activity) { 

     this.activity = activity; 
     dialog = new ProgressDialog(activity); 
     dialog.setTitle("Wait..."); 
    } 
    protected void onPreExecute() 
    { 
     dialog.show(); 
    } 
    protected String doInBackground(String params) 
    { 
     //background opearation 

    return "string"; 
    } 
    protected void onPostExecute(String result) 
    { 
     dialog.dismiss(); 
     //update ui 
    } 


    } 
0

可以sipmly做

HttpTicket mHttpTicket = new HttpTicket(this); 
mHttpTicket.execute(); 

你也可以删除构造函数,只是传递给OnPr e执行为参数。然后你给它在execute(this);