0

我的目标是插入某个 db 2 值、id 和 pass。我有一个注册页面,要求提供该数据和一个按钮来完成操作。那么在按钮监听器上我应该做什么?许多人告诉我使用 AsyncTask(我不知道如何使用)而不是 Thread。请记住,此类需要获取 2 个参数 id 并传递 .. 据我所知,线程在使用调用 run 方法的 start() 方法后启动,而 run 方法没有参数.. 那么我该如何传递这些2个参数?无论如何,我很困惑。另一件事是,如果我在 catch 块上遇到任何类型的错误,我会将错误放在某个字符串上,例如: String error = exceptionInstance.toString(); 然后我可以从注册页面中查看该字符串并打印错误。

myThreadInstance.start(); textViewInstance.setText(myThreadInstance.getError());

这是一场马拉松……我很困惑!!!!!!!

4

1 回答 1

1

根据我的说法,使用AsyncTask而不是 an,Thread因为它易于使用,并且您可以更好地控制后台线程,而无需执行额外的代码来创建单独的逻辑以在线程执行完成时更新 Ui,计算进度单位以便用户执行操作需要多少时间完成等

您的第一个问题是如何发送username和单击按钮。为此,请使用password构造函数:AsyncTaskAsyncTask

LoginOperation loginopertion=new LoginOperation(strusername, strpassword);
loginopertion.execute("");

您的第二个答案是我们如何在任务完成时接收和更新 Ui username,以便在执行完成时更新 Ui,例如:passwordAsyncTaskonPostExecuteAsyncTaskdoInBackground

public class LoginOperation extends AsyncTask<String, Void, String> {
    String strusername,strpassword;

    public LoginOperation(String strusername, String strpassword){
        this.strusername=strusername;
        this.strpassword=strpassword;
    }
    @Override
    protected void onPreExecute() {
        //show progressbar here 
    }
    @Override
    protected String doInBackground(String... params) {
        string result="";
        try
        {
            result=="success or fail";
            //do your network opertion here
        }
        catch(SQLException e)
        {
            result="ERROR";
        }
        return result;
    }      

    @Override
    protected void onPostExecute(String resultmsg) {    
        // show error here and update UI
        //or other opertion if login success
        textViewInstance.setText(resultmsg);
    }

}

有关 AsyncTask 方法的更多信息,请参见

http://developer.android.com/reference/android/os/AsyncTask.html

于 2012-12-20T18:57:02.500 回答