AsyncTask аргумент в Android - PullRequest
       5

AsyncTask аргумент в Android

0 голосов
/ 09 января 2012

Я создаю приложение, в котором при нажатии на кнопку пользователь может отправить электронное письмо.Но я хочу, чтобы задача отправки электронной почты выполнялась в фоновом режиме.Кто-то предложил мне использовать AsyncTask, но я совершенно не знаю об этом.Кто-нибудь может сказать мне, как это сделать?У меня есть функция sendEmail, которая принимает два строковых параметра (имя пользователя, пароль), и я не знаю, как передать эти два строковых аргумента в AsyncTask и метод doInBackground.моя функция sendEmail

    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 ]

2 голосов
/ 09 января 2012

в режиме 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 голосов
/ 09 января 2012
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("tes@test.com", "Test User name");

Первый параметр AsyncTask - это ваш тип входного параметра (вам нужно String), второй параметр используется при выполнении процесса, например, вы можете обновить свой индикатор прогресса, и, наконец, третий параметр - ваш возвращаемый параметр. Если вы хотите показать предупреждение или что-то еще в соответствии с вашими данными, вы можете передать параметры в метод onPostExecute с помощью этих параметров.

Если вы хотите показать диалог прогресса, вам следует переопределить функцию onPreExecute .

Надеюсь, это поможет.

...