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