我在Android
中,我有做一個REST API
多個AsyncTask
(一個用於HTTPGet
,一個用於HTTPPost
),我沒有任何問題與他們,但是當我試圖執行我AsyncTask
,我使用HTTPDelete
,它不執行doInBackground()
方法。我應該在我的APP上使用.executeOnExecutor嗎?
在SO中搜索我找到了這個解決方案:Android SDK AsyncTask doInBackground not running (subclass)但是我對使用.executeOnExecutor
還是不安全,因爲我在官方文檔中搜索:executeOnExecutor,它說它可能是問題。
例如,如果這些任務用於修改任何共同的狀態(如寫入文件由於按鈕點擊),有修改的順序沒有保證。
而且我用我的GET
,POST
和DELETE
方法來修改我的database
(我知道這是不是一個file
但我想,這可能給我同樣的問題)。
據此,我不確定我能做些什麼來執行這個.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
。
注意:它進入onPreExecute()
方法,但不在doInBackground() method
。
idCar是你的execute方法的一個整型對象嗎? –
@MdOmarFaroqueAnik是的。它是一個'int idCar = 5;' –
int是原始的。整數是一個對象。請嘗試像這樣使用新的整數(5),如果它有效。 –