如何显示'请等待'并避免GUI挂起?

时间:2011-12-18 14:31:59

标签: android

我编写了包含2个活动的应用程序。 在第一个 - 我需要给用户选择从库中选择图像,我将此图像发送到某个服务器。 服务器返回一些结果 - 如果结果是OK,我需要显示第二个活动。

我遇到的问题..

  1. 发送图片时 - 我看到屏幕变黑了...... 我想避免这种情况并展示一些很好的“请等待”的GUI - 我该怎么做?

  2. 我想让这个发送图像到服务器来自其他线程 - 我怎么能从android做到这一点?如何使用将在线程完成时调用的回调定义新线程?

  3. 感谢您的帮助。

4 个答案:

答案 0 :(得分:2)

使用asynctask。它会是这样的:

public void sendImage() {
    SendToServer.execute();
}

protected class SendToServer extends AsyncTask<Void, Boolean, Void>
{    

    @Override
    protected void onPreExecute()
    {
        //display your dialog
    }

    @Override
    protected Boolean doInBackground(Void... arg0) {

        //code to send your image to the serve
    }

    @Override
    protected void onPostExecute (Boolean updateSuccess)
    {     
        //close your dialog
        //If image was successfully sent open your other activity
    }
}

答案 1 :(得分:1)

问题1:

您应该使用ProgressDialogProgressBar来向用户显示正在执行的操作。有关详细信息,请查看此处:http://developer.android.com/reference/android/app/ProgressDialog.html

问题2: 一个好的解决方案是使用AsyncTask进行此操作,它为您提供了一组回调函数来控制操作。有关详细信息,请查看此处:http://developer.android.com/reference/android/os/AsyncTask.html

希望现在有所帮助!

答案 2 :(得分:1)

  1. 您可以定义自定义布局,并使用Activity.setContentView方法在GUI中放置您想要的任何内容。例如,您可以放置​​ProgressBar小部件。

  2. 正如您所注意到的,您在Java SE中编写了自己的Android应用程序。完全支持线程。

答案 3 :(得分:1)

这个问题有一个解决问题的答案。使用该答案作为开始,如果您对某个特定部分有任何问题,请告诉我们。

Download image for imageview on Android

祝你好运