我正在编写一个程序,当用户单击按钮时,将在onclick中调用asynctask。但是,每当用户单击按钮时,文本都会更改...我如何实现一些我可以调用的东西,以利用异步方法。

这是我的意思的一个例子

public void Talk(){

   text1.setText("Welcome what is your name?");

   respond.setOnClickListener(new View.OnClickListener() {

      @Override
      public void onClick(View v) {
         name = edit.getText().toString();

         new AsyncTask<Void, Integer, Void>(){
            @Override
            protected Void doInBackground(Void... arg0) {
               try {
                  Thread.sleep(850);
               } catch (InterruptedException e) {
                  e.printStackTrace();
               }

               return null;
            }

            @Override
            protected void onPostExecute(Void result) {
               text1.setText("Nice to meet you "+name);
               dismissDialog(typeBar);
            }

            @Override
            protected void onPreExecute() {
               typeBar = 0;
               showDialog(typeBar);
            }
         }.execute((Void)null);
      }
   });
}


因此,您可以看到用户每次按下按钮时文本都会更改。每次单击按钮时,键入ayncTask方法肯定很麻烦。有人知道我可以这样做吗?

最佳答案

我只是忽略为什么您在使用AsyncTask进行任何操作。不要使用内联类。在您的活动中创建一个私人班级:

 private class MyAsyncTask extends AsyncTask<String, Void, Void>


并重新使用它,例如:

MyAsyncTask.execute("Whatever")

关于android - Android AsyncTask实例或类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6416366/

10-13 09:12