AsyncTask onPostExecute 未执行原因

今天在主界面的Activity里面,通过异步加载后台数据的时候,用到AsyncTask,发现onPostExecute方法一直没有执行,因为这个方法里面可以进行UI的更新,后来才发现,原来是onPostExecute这个方法里面的参数必须和AsyncTask里面定义的一致。

另外,如果还不行,可以试试在onCreate里面加上下面代码。

try {
   Class.forName("android.os.AsyncTask");
  } catch (ClassNotFoundException e) {
   e.printStackTrace();
  }

 

class GetELTBrandTask extends AsyncTask<String,Integer,String> {//继承AsyncTask
		Spinner spinner_brand;
		
		public GetELTBrandTask(Spinner spinner_brand) {
			this.spinner_brand = spinner_brand;
		}
		
		@Override
		protected String doInBackground(String... params) {//处理后台执行的任务,在后台线程执行
            // 不能在后台线程操作ui
			//初始化 品牌列表
			SoapObject brandsData =WebServiceUtil.getELTBrands();
			if (brandsData != null) {
				try {
					jsonBrand = new JSONObject(brandsData.getProperty(0).toString());
					jsonBrandList = jsonBrand.getJSONArray("brandList");
					for(int i=0;i<jsonBrandList.length();i++){
						JSONObject jsonBrandRow = jsonBrandList.getJSONObject(i);
						// 找到数据
						list_brand.add(jsonBrandRow.getString("brandname").toString());
					}
				} catch (JSONException e) {
					e.printStackTrace();
					showToast(e.getMessage());
				}
				
			}
			return "" ;
		}

		protected void onPostExecute(String result) {// 后台任务执行完之后被调用,在ui线程执行
			ArrayAdapter<String> adapter_brand = new ArrayAdapter<String>(
					ELTCustomerAmountDetailList.this,
					R.layout.simple_list_item_rf, list_brand);
			adapter_brand
					.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
			if (list_brand != null) {
				spinner_brand.setAdapter(adapter_brand);
			}
		}
	     
		protected void onPreExecute() {// 在doInBackground(Params...)之前被调用,在ui线程执行
			super.onPreExecute();
		}

		protected void onCancelled() {// 在ui线程执行
			super.onCancelled();
		}
    	
    }


 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值