android-在后台从Internet提取数据并显示ProgressDialog或ProgressBar

前端之家收集整理的这篇文章主要介绍了android-在后台从Internet提取数据并显示ProgressDialog或ProgressBar 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在开发一个需要访问网站的应用程序
数据,并在设备上显示该数据.我想从中获取数据
Internet在后台显示,并在其上显示ProgressDialog或ProgressBar
设备以及应用程序何时从服务器应用程序收到响应
关闭对话框或栏,将显示数据.

为此,我正在使用AsyncTask-

AsyncTask的代码如下-

ServerTask extends AsyncTask {
        @Override
        protected void onPreExecute() {
                dialogAccessingServer = new ProgressDialog(ctx);
                dialogAccessingServer.setMessage(shownOnProgressDialog);
                dialogAccessingSpurstone.show();
        }

        @Override
        protected ServerResponse doInBackground(String... urlArray) {

                String urlString = urlArray[0];
                HttpResponse serverResponSEObject = null;

                //finding HttpResponse

                return serverResponSEObject;

        }//end of doInBackground

        @Override
        protected void onPostExecute(HttpResponse serverResponSEObject){
                dialogAccessingSpurstone.dismiss();

        }

}

并按以下方式调用代码-

ServerTask serverTaskObject = new ServerTask();
serverTaskObject.execute();
HttpResponse response = serverTaskObject.get();

//根据响应执行操作

但没有显示ProgressDialog.(我想原因是
线程不完整,并且仅当线程具有
完成).

我的问题-
1-如果我的猜测是正确的?如果是,那我应该如何实施呢?
2-如果还有其他更好的方法可以做到这一点?

谢谢

最佳答案
以下是在后台执行任务时显示ProgressDialog的模板代码

class GetTask extends AsyncTask<Object,Void,String>
    {
        Context mContext;
            ProgressDialog mDialog = null;

            GetPhotoFeedTask(Context context)
    {
        mContext = context;
    }

        @Override
        protected void onPreExecute()
        {
            super.onPreExecute();

             mDialog = new ProgressDialog(mContext);
             mDialog.setMessage("Please wait...");
             mDialog.show();
        }
                @Override
        protected String doInBackground(Object... params)
        {
                  // do stuff in background : fetch response
                }

                @Override
        protected void onPostExecute(String result)
        {
            super.onPostExecute(result);
            setProgressBarIndeterminateVisibility(false);
            // mDialog.dismiss();
                }
}

然后使用新的GetTask(this).execute()语句从活动中调用它;

注意:请注意,如果用户切换方向或导致随后发生的事件,则在显示ProgressDialog时,代码可能会中断.在这种情况下,建议使用托管对话框.

猜你在找的Android相关文章