Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.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
当我从web服务器收集值时,我的android ui崩溃_Android - Fatal编程技术网

当我从web服务器收集值时,我的android ui崩溃

当我从web服务器收集值时,我的android ui崩溃,android,Android,我已经成功地将我的android应用程序连接到我的web服务。我可以通过android应用程序发送、收集和更新Web服务上的详细信息。但当应用程序安装在android手机上时,一个简单的问题就出现了。当互联网速度较慢,我的应用程序从web服务器收集详细信息的时间过长时,我的android应用程序崩溃。 请问我该如何解决这个问题。加载资源的类。 我的代码粘贴在下面 public class GetLgsInState extends AsyncTask<String,String,Strin

我已经成功地将我的android应用程序连接到我的web服务。我可以通过android应用程序发送、收集和更新Web服务上的详细信息。但当应用程序安装在android手机上时,一个简单的问题就出现了。当互联网速度较慢,我的应用程序从web服务器收集详细信息的时间过长时,我的android应用程序崩溃。 请问我该如何解决这个问题。加载资源的类。 我的代码粘贴在下面

public class GetLgsInState extends AsyncTask<String,String,String>{
    private ProgressDialog progressdialog = null;
    Context context;
    private String state = "";

    LGModel[] localgovernments = null;



    public GetLgsInState(Context context,String state){

        this.context = context;
        this.state = state;
    }


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

        progressdialog = new ProgressDialog(context);
        progressdialog.setMessage("Loading the local government areas in state ...");
        progressdialog.show();
    }


    @Override
    protected String doInBackground(String... arg0) {
        // TODO Auto-generated method stub
        List<NameValuePair> args = new ArrayList<NameValuePair>();
        args.add(new BasicNameValuePair("id",state));
        JSONHttpClient jsonHttpClient = new JSONHttpClient();
        try{
           localgovernments = jsonHttpClient.Get(RestfulServiceUrl.GetLGInState, args, LGModel[].class);
        }
        catch(Exception e)
        {

            Log.i("collection failed","Could not collect");
        }


        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                if (localgovernments.length > 0) {

                    for(LGModel lg : localgovernments){
                        //HashMap<String, String> mapLG = new HashMap<String, String>();
                        //mapLG.put(LGModel.LGName,lg.getName());

                        //hospitalList.add(mapLG);

                        lgspinnerAdapter.add(lg.getName());

                        lgspinnerAdapter.notifyDataSetChanged();

                    }

                }
                else
                {                       
                    //Toast.makeText(context,"No local government for this state",Toast.LENGTH_LONG);
                    errorText.setText("No Local Government entered for this state");
                }
            }
        });

        return null;
    }           


    @Override
    protected void onPostExecute(String s){
         progressdialog.dismiss();          

    }


}

您的变量对象
localgovernments
可能从web服务输出接收空值

检查它是否为空

if (localgovernments!=null){
 if (localgovernments.length > 0) {

                    for(LGModel lg : localgovernments){
                        //HashMap<String, String> mapLG = new HashMap<String, String>();
                        //mapLG.put(LGModel.LGName,lg.getName());

                        //hospitalList.add(mapLG);

                        lgspinnerAdapter.add(lg.getName());

                        lgspinnerAdapter.notifyDataSetChanged();

                    }
}
if(本地政府!=null){
如果(localgovernments.length>0){
适用于(LGLG型:地方政府){
//HashMap mapLG=新的HashMap();
//put(LGModel.LGName,lg.getName());
//医院登记员(mapLG);
lgspinnerAdapter.add(lg.getName());
lgspinnerAdapter.notifyDataSetChanged();
}
}

应用程序工作正常。但当连接到web服务时出现网络问题,应用程序会崩溃。因此,我谨慎地更改web服务url,以便您可以查看在日志cat中生成的内容。当http请求因任何原因失败时,您的LocalGovernment将为null,因此检查此条件localgovernments.length>0将导致你的应用程序崩溃。“应用程序运行正常。”不,没有,否则您就不会在这里。请参阅
AsyncTask
文档,了解如何正确使用它;没有理由求助于
runOnUiThread
。其次,如果您知道服务访问失败,请不要尝试访问损坏或丢失的数据。是的,谢谢我正在检查它(Moh.Sukhni).你说得对,这才是真正的问题。检查它是否有助于将它评为已解决的新问题。我的应用程序不再会崩溃。我非常感谢。是的,如果它为空,你必须实现其他部分
if (localgovernments!=null){
 if (localgovernments.length > 0) {

                    for(LGModel lg : localgovernments){
                        //HashMap<String, String> mapLG = new HashMap<String, String>();
                        //mapLG.put(LGModel.LGName,lg.getName());

                        //hospitalList.add(mapLG);

                        lgspinnerAdapter.add(lg.getName());

                        lgspinnerAdapter.notifyDataSetChanged();

                    }
}