aSync Tâche ne peut pas être exécuté deux fois

Je travaille sur une application qui a besoin de télécharger un fichier vers le serveur. Mais pour télécharger les fichiers, il faut se connecter (de travail), puis obtenir l'url (de travail) puis de télécharger (Force Close)

Le logcat:

10-13 14:10:27.494: E/AndroidRuntime(26578): FATAL EXCEPTION: main
10-13 14:10:27.494: E/AndroidRuntime(26578): java.lang.IllegalStateException: Cannot execute task: the task has already been executed (a task can be executed only once)
10-13 14:10:27.494: E/AndroidRuntime(26578):    at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:578)
10-13 14:10:27.494: E/AndroidRuntime(26578):    at android.os.AsyncTask.execute(AsyncTask.java:534)
10-13 14:10:27.494: E/AndroidRuntime(26578):    at com.spxc.bayfiles.FilesActivity.onOptionsItemSelected(FilesActivity.java:294)
10-13 14:10:27.494: E/AndroidRuntime(26578):    at com.actionbarsherlock.app.SherlockActivity.onMenuItemSelected(SherlockActivity.java:208)
10-13 14:10:27.494: E/AndroidRuntime(26578):    at com.actionbarsherlock.ActionBarSherlock.callbackOptionsItemSelected(ActionBarSherlock.java:603)
10-13 14:10:27.494: E/AndroidRuntime(26578):    at com.actionbarsherlock.internal.ActionBarSherlockNative.dispatchOptionsItemSelected(ActionBarSherlockNative.java:93)
10-13 14:10:27.494: E/AndroidRuntime(26578):    at com.actionbarsherlock.app.SherlockActivity.onOptionsItemSelected(SherlockActivity.java:159)
10-13 14:10:27.494: E/AndroidRuntime(26578):    at android.app.Activity.onMenuItemSelected(Activity.java:2566)
10-13 14:10:27.494: E/AndroidRuntime(26578):    at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:986)
10-13 14:10:27.494: E/AndroidRuntime(26578):    at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735)
10-13 14:10:27.494: E/AndroidRuntime(26578):    at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:152)
10-13 14:10:27.494: E/AndroidRuntime(26578):    at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874)
10-13 14:10:27.494: E/AndroidRuntime(26578):    at com.android.internal.view.menu.ActionMenuView.invokeItem(ActionMenuView.java:547)
10-13 14:10:27.494: E/AndroidRuntime(26578):    at com.android.internal.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:115)
10-13 14:10:27.494: E/AndroidRuntime(26578):    at android.view.View.performClick(View.java:4240)
10-13 14:10:27.494: E/AndroidRuntime(26578):    at android.view.View$PerformClick.run(View.java:17721)
10-13 14:10:27.494: E/AndroidRuntime(26578):    at android.os.Handler.handleCallback(Handler.java:730)
10-13 14:10:27.494: E/AndroidRuntime(26578):    at android.os.Handler.dispatchMessage(Handler.java:92)
10-13 14:10:27.494: E/AndroidRuntime(26578):    at android.os.Looper.loop(Looper.java:137)
10-13 14:10:27.494: E/AndroidRuntime(26578):    at android.app.ActivityThread.main(ActivityThread.java:5103)
10-13 14:10:27.494: E/AndroidRuntime(26578):    at java.lang.reflect.Method.invokeNative(Native Method)
10-13 14:10:27.494: E/AndroidRuntime(26578):    at java.lang.reflect.Method.invoke(Method.java:525)
10-13 14:10:27.494: E/AndroidRuntime(26578):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
10-13 14:10:27.494: E/AndroidRuntime(26578):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-13 14:10:27.494: E/AndroidRuntime(26578):    at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:112)
10-13 14:10:27.494: E/AndroidRuntime(26578):    at dalvik.system.NativeStart.main(Native Method)

Mon code: (handleJsonObject):

private void handleJsonObject(JSONObject object) {
try {
sUpload = object.getString("uploadUrl");            
HttpClient httpclient = new DefaultHttpClient();
//post request to send the video 
File sdCardRoot = Environment.getExternalStorageDirectory();
File myDir = new File(sdCardRoot, "Download");
HttpPost httppost = new HttpPost(sUpload);
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy( policy);
FileBody video_file1 = new FileBody(new File(myDir + "/test.txt"));
MultipartEntity reqEntity = new MultipartEntity();
reqEntity.addPart("file=", video_file1);                    
httppost.setEntity(reqEntity);
//DEBUG
System.out.println( "executing request " + httppost.getRequestLine( ) );
HttpResponse response = null;
try {
response = httpclient.execute( httppost );
} catch (ClientProtocolException e) {
//TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
HttpEntity resEntity = response.getEntity( );
//DEBUG
System.out.println( response.getStatusLine( ) );
if (resEntity != null) {
try {
System.out.println( EntityUtils.toString( resEntity ) );
} catch (org.apache.http.ParseException e) {
//TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
} //end if
if (resEntity != null) {
try {
resEntity.consumeContent( );
} catch (IOException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
} //end if
httpclient.getConnectionManager( ).shutdown( );
} catch (JSONException e) {
Log.e("log_tag", "Error parsing data: " + e.toString());
Crouton.makeText(this, "Something went wrong!", Style.ALERT).show();
}
}

Le code (aSync) Qui appelle au code de la poste (handleJsonObject):

asyncTask.setJsonListener(new JsonListener() {
public void onObjectReturn(JSONObject object) {
handleJsonObject(object);
}
});
asyncTask.execute("http://api.bayfiles.net/v1/file/uploadUrl?session=" + sessionId);

Je ne peux pas comprendre pourquoi le code ne fonctionne pas?
Toute aide est grandement appréciée!

L'erreur est originaire de votre activité. Vous avez besoin de poster ce code.

OriginalL'auteur Stian Instebo | 2013-10-13