Android 异步任务失败
在我的活动中,我设计了一个导航抽屉,因此,当我单击片段时,我的活动挂起,如下所示: 它冻结了5~6秒,所以我想展示一个旋转的轮子。 我知道我应该扩展AsyncTask,但它不起作用! 以下是我尝试过的:Android 异步任务失败,android,android-asynctask,lag,Android,Android Asynctask,Lag,在我的活动中,我设计了一个导航抽屉,因此,当我单击片段时,我的活动挂起,如下所示: 它冻结了5~6秒,所以我想展示一个旋转的轮子。 我知道我应该扩展AsyncTask,但它不起作用! 以下是我尝试过的: private void samsung{ // TODO Auto-generated method stub Url = "/// ////////////// //////////// /////////////.php"; new loadSomeStuff()
private void samsung{
// TODO Auto-generated method stub
Url = "/// ////////////// //////////// /////////////.php";
new loadSomeStuff().execute(Url);
}
下面是我的aSyncTask类:
public class loadSomeStuff extends AsyncTask<String, Integer, String> {
ProgressDialog dialog;
protected void onPreExecute(String f) {
dialog = new ProgressDialog(Fragment9.this.getSherlockActivity());
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
dialog.setCancelable(false);
dialog.setIndeterminate(true);
dialog.show();
}
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
beanClass.clear();
list.setAdapter(null);
String result = "";
InputStream isr = null;
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httpost = new HttpPost(Url);
HttpResponse resposne = httpclient.execute(httpost);
HttpEntity entity = resposne.getEntity();
isr = entity.getContent();
} catch (Exception e) {
Log.e("log_httpconnection",
"error in http connection" + e.toString());
Toast.makeText(getSherlockActivity(), "No Connection",
Toast.LENGTH_SHORT).show();
}
try {
BufferedReader reader = new BufferedReader(
new InputStreamReader(isr, "UTF-8"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
isr.close();
result = sb.toString();
} catch (Exception e) {
Log.e("log_json", "Error converting Result " + e.toString());
}
try {
JSONArray jArray = new JSONArray(result);
for (int i = 0; i < jArray.length(); i++) {
JSONObject json = jArray.getJSONObject(i);
beanClass.add(new BeanClass(json.getString("PhoneName"),
json.getString("ModelNumber"), json
.getString("PhonePrice"), json
.getString("imageurl")));
}
dbHelpersamsung.deletesamsunglebanonphones();
dbHelpersamsung.insertthephonessamsunglebanon();
} catch (Exception e) {
Log.e("lag_tag", "ERROR PARSING DATA" + e.toString());
displaylistviewsamsunglebanon();
}
return null;
}
protected void onProgressUpdate(Integer... progress) {
}
protected void onPostExecute(String result) {
list.setAdapter(new MyListAdapter(getActivity(), beanClass));
}
}
public类loadSomeStuff扩展异步任务{
进程对话;
受保护的void onPreExecute(字符串f){
dialog=newprogressdialog(Fragment9.this.getSherlockActivity());
setProgressStyle(ProgressDialog.STYLE_微调器);
对话框。可设置可取消(false);
对话框。setUndeterminate(true);
dialog.show();
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
//TODO自动生成的方法存根
beanClass.clear();
list.setAdapter(空);
字符串结果=”;
InputStream isr=null;
试一试{
HttpClient HttpClient=新的DefaultHttpClient();
HttpPost HttpPost=新的HttpPost(Url);
HttpResponse resposne=httpclient.execute(httpost);
HttpEntity entity=resposne.getEntity();
isr=entity.getContent();
}捕获(例外e){
Log.e(“Log\u httpconnection”,
“http连接错误”+e.toString());
Toast.makeText(getSherlockActivity(),“无连接”,
吐司。长度(短)。show();
}
试一试{
BufferedReader reader=新的BufferedReader(
新的InputStreamReader(isr,“UTF-8”),8);
StringBuilder sb=新的StringBuilder();
字符串行=null;
而((line=reader.readLine())!=null){
sb.追加(第+行“\n”);
}
isr.close();
结果=sb.toString();
}捕获(例外e){
e(“Log_json”,“错误转换结果”+e.toString());
}
试一试{
JSONArray jArray=新JSONArray(结果);
for(int i=0;i
您有这个
list.setAdapter(null);
还有这个
Toast.makeText(getSherlockActivity(), "No Connection",
Toast.LENGTH_SHORT).show();
无法从
doInbackground
更新ui。在onPostExecute
或您runOnUiThread
中更新ui是否有任何异常可以发布堆栈跟踪?好的,但现在导航抽屉有点滞后,然后活动屏幕变为空白,然后列表视图显示结果,微调器不显示。。我能做什么?如果您想显示进度,请将下面的设置为false对话框。setUndeterminate(false)
;。试试这个@KingOmar,它应该会显示你需要关闭对话框。至少对我来说,我看不出有什么不对。