我应该在我的APP上使用.executeOnExecutor吗?

时间:2015-08-18 14:57:40

标签: java android android-asynctask

我在REST APIAndroid进行AsyncTask我有多个HTTPGet(一个用于HTTPPost,另一个用于AsyncTask)我没有遇到任何问题但是,当我尝试执行我使用HTTPDelete的{​​{1}}时,它并没有执行doInBackground()方法。

在搜索结果中我找到了这个解决方案:Android SDK AsyncTask doInBackground not running (subclass)但我对使用.executeOnExecutor不安全,因为我在官方文档中搜索:executeOnExecutor并且它说这可能是问题。

  

例如,如果这些任务用于修改任何共同的状态(例如由于点击按钮而编写文件),则无法保证修改的顺序。

我正在使用GETPOSTDELETE方法修改我的database(我知道它不是file 1}}但我认为它可以给我同样的问题。)

根据这一点,我不能确定如何执行此.doInBackground()方法,因为我不希望将来遇到问题。

我应该使用什么?

这是我的AsyncTask

class DeleteCar extends AsyncTask<Integer, Integer, Void> {

   protected void onPreExecute(){
   }

   protected Void doInBackground(Integer... id) {

      try{
          String url = "http://IP of my computer/project/cars/" + id[0].intValue();

          HttpClient httpClient = new DefaultHttpClient();
          HttpDelete method= new HttpDelete(url);
          method.setHeader("content-type", "application/json");
          HttpResponse response = httpClient.execute(method);

          HttpEntity httpEntity = response.getEntity();

      }catch(Exception ex){
          Log.e("ServicioRest",ex.toString());
      }

      return null;
   }

   protected void onProgressUpdate(){
   }

   protected void onPostExecute(){
   }
}

我按照这样执行:

new DeleteCar().execute(idCar);

其中idCar Integer idCar = new Integer(id);id int {/ 1}}。

注意:它以onPreExecute()方式输入,但不在doInBackground() method输入。

1 个答案:

答案 0 :(得分:-1)

这是一个虚拟代码:

public class DeleteCar extends AsyncTask<Integer,Integer,Void> {
@Override
protected Void doInBackground(Integer... params) {

    //logging to show that it is working
    Log.d("result:", String.valueOf(params[0].intValue()));


    return null;
}

}

我为AsyncTask创建了不同的类。然后我从我的活动中调用它:

new DeleteCar().execute(new Integer(10));

完美地工作/执行doInBackground方法。

我的建议是使用改造。这里是学习改造的几个链接: 1. http://square.github.io/retrofit/ 2.这是一个比较:https://androidtutorialmagic.wordpress.com/android-asynctask-and-its-dark-side/comparison-among-asynctaskvolley-and-retrofit/ 3.这是一个基本教程:https://androidtutorialmagic.wordpress.com/android-asynctask-and-its-dark-side/retrofit-networking-in-android-tutorial-replacement-of-asynctask-and-volley/

我一直在使用Retrofit。我的反应非常快。如果您需要更多帮助来使用改造,请告诉我。感谢