Android按钮响应问题

Android按钮响应问题,android,button,ui-thread,Android,Button,Ui Thread,大家好 因为我使用的是一个按钮,只要点击该按钮,它就会连接到一个Web服务。 但问题是,当我按下按钮时,它并没有显示它已被单击并连接到internet和web服务。连接后,它向我显示已单击的响应。简而言之,按钮的响应非常慢。如果buton在其侦听器中具有某种INternet连接性。 我知道这和UI线程有关。但请朋友们引导我度过这一关 非常感谢,您必须使用此后台操作的处理程序,请在操作系统上询问并遵循此链接 您必须使用处理程序执行此后台操作,并且已在操作系统上询问,请遵循此链接 您应该编写一个类,

大家好 因为我使用的是一个按钮,只要点击该按钮,它就会连接到一个Web服务。 但问题是,当我按下按钮时,它并没有显示它已被单击并连接到internet和web服务。连接后,它向我显示已单击的响应。简而言之,按钮的响应非常慢。如果buton在其侦听器中具有某种INternet连接性。 我知道这和UI线程有关。但请朋友们引导我度过这一关


非常感谢,

您必须使用此后台操作的处理程序,请在操作系统上询问并遵循此链接

您必须使用处理程序执行此后台操作,并且已在操作系统上询问,请遵循此链接

您应该编写一个类,名为MyWebService,并从AsyncTask扩展它。在其重写的doInBackground()方法中执行connect操作,并更新其onPostExecute()方法中的任何UI更改。

您应该编写一个类,称为MyWebService,并从AsyncTask扩展它。在其重写的doInBackground()方法中执行connect操作,并在其onPostExecute()方法中更新任何UI更改。

在onClickListener中创建一个新线程,在后台执行繁重的工作。这样,UI线程将能够更新按钮的状态:

button.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        new Thread(new Runnable() {

        @Override
        public void run() {
            // Code that connects to web service goes here...
        }
    }).start();
});

在onClickListener中创建一个新线程,在后台执行繁重的工作。这样,UI线程将能够更新按钮的状态:

button.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        new Thread(new Runnable() {

        @Override
        public void run() {
            // Code that connects to web service goes here...
        }
    }).start();
});

将以下代码放入类中:

 // Need handler for callbacks to UI Threads
    // For background operations
    final Handler mHandler = new Handler();

    // Create Runnable for posting results
    final Runnable mUpdateResults = new Runnable() {
        public void run() {
            // Do your task which needs to get done after webservice call is complete.
        }
    };
要调用Web服务,请在按钮事件中使用以下代码:

new Thread() {
            public void run() {             
                // Place the webservice call here.   

                mHandler.post(mUpdateResults);
            }
            }.start();
实际上,您需要的是多线程,所有的webservice调用和网络活动都应该在单独的线程中进行。
调用thread start()后,您可以做任何您想做的事情,并且会立即完成,不会有任何延迟(在您的例子中,显示该按钮已按下)。

将以下代码放入类中:

 // Need handler for callbacks to UI Threads
    // For background operations
    final Handler mHandler = new Handler();

    // Create Runnable for posting results
    final Runnable mUpdateResults = new Runnable() {
        public void run() {
            // Do your task which needs to get done after webservice call is complete.
        }
    };
要调用Web服务,请在按钮事件中使用以下代码:

new Thread() {
            public void run() {             
                // Place the webservice call here.   

                mHandler.post(mUpdateResults);
            }
            }.start();
实际上,您需要的是多线程,所有的webservice调用和网络活动都应该在单独的线程中进行。
调用thread start()后,您可以执行任何您想执行的操作,并且可以立即执行,不会有任何延迟(在您的情况下,显示该按钮已按下)。

这是做什么的?为什么这样更快?非常感谢,UI只能从UI线程更新。如果您尝试从其他线程执行此操作,将引发异常。此外,如果您试图在UI线程上做太多工作,UI将变得无响应。总是在后台线程中执行耗时的任务,并在准备好更新UI时将结果发布回UI线程。这是做什么的?为什么这样更快?非常感谢,UI只能从UI线程更新。如果您尝试从其他线程执行此操作,将引发异常。此外,如果您试图在UI线程上做太多工作,UI将变得无响应。始终在后台线程中执行耗时的任务,并在准备好更新UI时将结果发布回UI线程。您好,我正在删除并重新生成应用程序中的视图。我应该在单独的线程中执行此操作吗?现在,它非常慢,我正在删除并重新制作我的应用程序中的视图。我应该在单独的线程中执行此操作吗?现在,速度非常慢