package com.jiuqi.njt.service; import java.util.List; import android.content.Context; import android.os.AsyncTask; import android.util.Log; import com.jiuqi.lbsinterface.bean.UserPositionBean; import com.jiuqi.lbsinterface.manager.IPositionManager; import com.jiuqi.mobile.nigo.comeclose.ws.client.ClientContext; import com.jiuqi.mobile.nigo.comeclose.ws.client.LBSClientContext; import com.jiuqi.njt.data.MyApp; import com.jiuqi.njt.data.OptsharepreInterface; import com.jiuqi.njt.register.city.DataUserPositionBean; import com.jiuqi.njt.register.city.TaskReturnResult; import com.jiuqi.njt.register.city.UplocationUtil; import com.jiuqi.njt.register.city.UserPositionDBUtil; import com.jiuqi.njt.util.Constants; import com.jiuqi.njt.util.login.AutoLoginUtil; /** * 上报位置异步类 * @author joe * */ public class Uptask extends AsyncTask<Void, Void, Void> { private Context context; private String TAG = this.getClass().getName(); private UserPositionBean positionbean; private boolean needRepeat; private TaskReturnResult taskReturnResult =new TaskReturnResult(); private MyApp application ; private UserPositionDBUtil userPositionDBUtil; private List<DataUserPositionBean> userPositionBeanList; private boolean isRetransmission; /** * 上报位置异步类 * @param context * @param positionbean */ public Uptask(Context context, UserPositionBean positionbean) { super(); this.context = context; this.positionbean = positionbean; application = (MyApp) context.getApplicationContext(); userPositionDBUtil = new UserPositionDBUtil(context); } public Uptask(Context context, boolean isRetransmission) { super(); this.context = context; this.isRetransmission = isRetransmission; application = (MyApp) context.getApplicationContext(); userPositionDBUtil = new UserPositionDBUtil(context); } @Override protected void onPreExecute() { super.onPreExecute(); if(isRetransmission){ userPositionBeanList = userPositionDBUtil.queryAllUserPosition(); } } @Override protected Void doInBackground(Void... params) { try { LBSClientContext clientContext = application.getLbsClientContext(); if(clientContext==null){ clientContext = LBSClientContext.getClientContext(Constants.LBS_SERVER_URL); application.setLbsClientContext(clientContext); } IPositionManager manager = clientContext.getManager(IPositionManager.class); if(isRetransmission){ UserPositionBean[] userGPSs=new UserPositionBean[userPositionBeanList.size()];; manager.add(userGPSs); userPositionDBUtil.deleteUserPositionList(userPositionBeanList); }else{ manager.add(positionbean); } taskReturnResult.setSuccess(true); } catch (Exception e) { e.printStackTrace(); if (null != e.getMessage()) { taskReturnResult.setMessage(e.getMessage()); } else { taskReturnResult.setMessage("服务端异常,请稍后重试"); } // needRepeat = new AutoLoginUtil(context, e).getNewSession(); } return null; } @Override protected void onPostExecute(Void result) { super.onPostExecute(result); Log.e(TAG, taskReturnResult.getMessage()); // if(needRepeat){//如果重新获取Session后,需要重新执行一次异步类 // new Uptask(context,positionbean).execute(); // }else{ if(!isRetransmission&&!taskReturnResult.isSuccess()){//如果上报失败就把上报失败的数据保存到数据库中 DataUserPositionBean dataUserPositionBean = UplocationUtil.convertUserPositionBean(positionbean); userPositionDBUtil.addUserPosition(dataUserPositionBean); } // } } }