Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 停止不确定进度条_Android - Fatal编程技术网

Android 停止不确定进度条

Android 停止不确定进度条,android,Android,我的android应用程序使用ProgressDialog。当向服务器发送http请求(RESTfulWebService)时显示对话框,当从服务器接收结果时隐藏对话框 private class GetMyTimeSheetTask extends AsyncTask<String, Void, String> { private ProgressDialog progress; protected String doInBackground(String...

我的android应用程序使用
ProgressDialog
。当向服务器发送http请求(RESTfulWebService)时显示对话框,当从服务器接收结果时隐藏对话框

private class GetMyTimeSheetTask extends AsyncTask<String, Void, String>
{
    private ProgressDialog progress;

    protected String doInBackground(String... params) {

        MyTimeSheetFragment.this.getActivity().runOnUiThread(new Runnable() {
            public void run() {
                progress = new ProgressDialog(MyTimeSheetFragment.this.getContext());
                progress.setTitle(getResources().getString(R.string.app_name));
                progress.setMessage(getResources().getString(R.string.loading));
                progress.setProgressStyle(ProgressDialog.STYLE_SPINNER);
                progress.setCancelable(false);
                progress.show();
            }
        } );

        String result = HttpUtil.httpGet(
                params[0], params[1],
                params[2], params[3],
                params[4]);
        return result;
    }

    protected void onPostExecute(String param) {
        progress.dismiss();
        ....
        }
    }
私有类GetMyTimeSheetTask扩展异步任务
{
私人进展对话进展;
受保护的字符串doInBackground(字符串…参数){
MyTimeSheetFragment.this.getActivity().runOnUiThread(新的Runnable()){
公开募捐{
progress=newprogressdialog(MyTimeSheetFragment.this.getContext());
setTitle(getResources().getString(R.string.app_name));
setMessage(getResources().getString(R.string.loading));
progress.setProgressStyle(ProgressDialog.STYLE\u微调器);
进度。可设置可取消(false);
progress.show();
}
} );
字符串结果=HttpUtil.httpGet(
参数[0],参数[1],
参数[2],参数[3],
参数[4]);
返回结果;
}
受保护的void onPostExecute(字符串参数){
进步。解散();
....
}
}

问题是有时服务器有问题,进度对话框永远显示,我不知道如何关闭它。如何解决这个问题?感谢您的帮助。

尝试将超时方案与异步任务一起实施

当出现错误时,您的HttpUtil将返回错误消息,当超时时,您将返回超时信息,以便在收到这些异常消息时隐藏对话框。 我看不到HttpUtil代码,这里可能是目前为止的解决方案:

private class GetMyTimeSheetTask extends AsyncTask<String, Void, String> {  
    private static final int REQUEST_TIMEOUT = 5000;
    private ProgressDialog progress;
    private Handler handler = new Handler(Looper.getMainLooper());
    private Runnable hideDialogTask = new Runnable(){
        @Override
        public void run() {
            progress.dismiss();
        }
   };

    protected String doInBackground(String... params) {

        MyTimeSheetFragment.this.getActivity().runOnUiThread(new Runnable(){
            public void run() {
            progress = new ProgressDialog(MyTimeSheetFragment.this.getContext());
            progress.setTitle(getResources().getString(R.string.app_name));
            progress.setMessage(getResources().getString(R.string.loading));
            progress.setProgressStyle(ProgressDialog.STYLE_SPINNER);
            progress.setCancelable(false);
            progress.show();
            handler.postDelayed(hideDialogTask, REQUEST_TIMEOUT);
        }
    } );

    String result = HttpUtil.httpGet(
            params[0], params[1],
            params[2], params[3],
            params[4]);
    return result;
}

protected void onPostExecute(String param) {
    progress.dismiss();
    ....
    }
}
私有类GetMyTimeSheetTask扩展异步任务{
私有静态最终整数请求\u超时=5000;
私人进展对话进展;
私有处理程序Handler=新处理程序(Looper.getMainLooper());
private Runnable hideDialogTask=new Runnable(){
@凌驾
公开募捐{
进步。解散();
}
};
受保护的字符串doInBackground(字符串…参数){
MyTimeSheetFragment.this.getActivity().runOnUiThread(新的Runnable()){
公开募捐{
progress=newprogressdialog(MyTimeSheetFragment.this.getContext());
setTitle(getResources().getString(R.string.app_name));
setMessage(getResources().getString(R.string.loading));
progress.setProgressStyle(ProgressDialog.STYLE\u微调器);
进度。可设置可取消(false);
progress.show();
postDelayed(hideDialogTask,请求超时);
}
} );
字符串结果=HttpUtil.httpGet(
参数[0],参数[1],
参数[2],参数[3],
参数[4]);
返回结果;
}
受保护的void onPostExecute(字符串参数){
进步。解散();
....
}
}

您可以在未收到特定秒数的响应或null&&progressdialog.isshowing()后运行asyc in处理程序和in处理程序,然后取消对话框并显示一些错误消息。此外,请在关闭对话框时检查活动的生命周期: