2012-01-09 9 views
0

私はボタンをクリックするとユーザがメールを送信できるアプリを作成しています。 しかし、電子メールを送信するタスクをバックグラウンドで実行する必要があります。 誰かが私にAsyncTaskの使用を提案しましたが、私はこれに全く気づいていません。 誰かが私にそれを行う方法を教えてもらえますか? 2つの文字列パラメータ(username、password)を受け取るsendEmail関数があり、その2つの文字列引数をAsyncTaskメソッドとdoInBackgroundメソッドに渡す方法がわかりません。 私のsendEmail機能はandroidのAsyncTask引数

public void sendEmail(String ownerEmailid, String datapwd) 
{ 
    try { 

     GMailSender sender = new GMailSender(ownerEmailid, datapwd); 
     sender.sendMail("This is Subject", 
         "Hey buddy listen to this station it is awesome", 
         ownerEmailid, 
         email); 
    } catch(Exception e) { 
     Log.e("SendMail", e.getMessage(), e); 
    } 
} 

あるソリューションを提案してください。

答えて

2

のonClickで呼び出す

new SendEmail(0).execute(); 

/** Inner class for implementing progress bar before fetching data **/ 
    private class SendEmail extends AsyncTask<Void, Void, Integer> 
    { 
//if you want to show progress you can show here 

    // private ProgressDialog Dialog = new ProgressDialog(yourActivityClass.this); 
    @Override 
    protected void onPreExecute() 
    { 
//   Dialog.setMessage("Doing something..."); 
    //  Dialog.show(); 
    } 

    @Override 
    protected Integer doInBackground(Void... params) 
    { 
     //Task for sending mail 

try { 

     GMailSender sender = new GMailSender(ownerEmailid, datapwd); 
     sender.sendMail("This is Subject", 
         "Hey buddy listen to this station it is awesome", 
         ownerEmailid, 
         email); 
    } catch(Exception e) { 
     Log.e("SendMail", e.getMessage(), e); 
    } 
     return 0; 
    } 

    @Override 
    protected void onPostExecute(Integer result) 
     { 

     if(result==0) 
     { 
//do some thing 
     } 

// after completed finished the progressbar 
//  Dialog.dismiss(); 
    } 
+0

ちょっとした変更が必要でした。新しいSendEmail(0).execute(); 新しいSendEmail()を書きました。この回答が役に立ちそうなら、それは – shankey

0
private class YourTask extends AsyncTask<String, Void, Void> { 

     @Override 
     protected Void doInBackground(String... params) { 
      String email = params[0]; 
        String name = params[1]; 


         // do whatever with your strings.. 
     } 

     @Override 
     protected void onPostExecute() { 

     } 

    } 

new YourTask().execute("[email protected]", "Test User name"); 
AsyncTaskの

最初のパラメータは、プロセスが実行されているときに、第2のパラメータは、あなたの進捗状況を更新することができ、たとえば、使用されている、(あなたの必要性がStringである)あなたの入力のparamaterタイプですインジケータ、最後に3番目のパラメータが戻りパラメータです。出力に応じてアラートなどを表示する場合は、このパラメータを使用してonPostExecuteメソッドにパラメータを渡すことができます。

進捗ダイアログを表示する場合は、onPreExecute機能を無効にする必要があります。

これが役に立ちます。

+0

になりました。あなたは投票するべきです... – barisatbas