AsyncTask与新线程

时间:2017-12-06 08:37:33

标签: android

我有一个与网络服务一起使用的应用。

使用网络服务的行动可能需要几秒钟,当我在google中搜索一个处理这个概念的处理程序时,我看到我可以使用AsyncTask或新线程。

我解释了我的基本动作应用。 在MainActivity中,我有两个字段用户名和密码。 MainActivity从用户获取输入并将这些输入发送到ActionClass中的函数,并在那里使用WSClass。 在函数类中,我发送到Web服务并等待响应。

  1. 当用户等到我的时候,如何创建白色圆圈 动作应用程序?
  2. 最好的选择是什么?(AsyncTask / new Thread)
  3. MainActivity:

    public class MainActivity extends AppCompatActivity {
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
            ActionClass = ActionClass.getInstans();
            ActionClass.setContext(this);
            ActionClass.login("username","password");// in the future in put a PlainText for username and password.
            if(isLogin == true)
            {
                //here i move to another activity....
            }
        }
    }
    
    public class ActionClass
    {
        public void setContext(Context context) {
            if (this.context == null) {
                this.context = context;
                WSClass = new WSClass();
            }
        }
      public static ActionClass getInstans() {
            if (instans == null) {
                synchronized (ActionClass.class) {
                    if (instans == null)
                        instans = new ActionClass();
                }
            }
    
            return instans;
        }
    
        public boolean login(String username, String password) {
        {
            WSClass.loginWs(url,username, password, object.class);
        }
    }
    
         public class WSClass
         {
              public <T> T login(String URL,String username,String  password, 
              Class<T> output)
              {
    
              //...Do Something...
              }
         }
    

    更新qustion WsClass使用泛型函数来获取并返回<T>变量。

    我检查了AsyncTask后... AsyncTask可以作为通用使用,如果不能解决这个问题?

    上面更新了WSClass中的函数。

    谢谢,

    塔尔

2 个答案:

答案 0 :(得分:0)

在我看来,使用异步任务更好。

从Handler和Thread创建异步任务以处理异步目的。 对于处理某些执行时间很短(几秒钟)且具有后台工作的任务始终使用异步任务。异步任务像单个线程一样执行而不解释UI线程。

AsyncTask可以正确,轻松地使用UI线程。此类允许您执行后台操作并在UI线程上发布结果,而无需操作线程和/或处理程序。

答案 1 :(得分:0)

如果您只是做简单的任务(在您的示例中,它是登录),您最好选择AsyncTask,但如果您想要做更多工作,并且这些工作是相对的,或者任务需要经常重启,那么最好选择线程