J'ai un asynctask exécuté dans onCreateView dans un fragment. Lorsque l'écran est éteint et que le fragment doit être affiché, l'asynctask démarre mais isCancelled() est vrai. J'ai utilisé PARTIAL_WAKE_LOCK mais le problème n'est pas résolu. Merci d'avance.Android AsyncTask s'exécute avec isCancelled() = true lorsque l'écran est éteint
Voici un exemple de code
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
activity = getSherlockActivity();
context = activity.getApplicationContext();
view = inflater.inflate(R.layout.main, container, false);
DownloadXMLTask = new DownloadXML(getActivity());
DownloadXMLTask.execute(file);
return view;
}
private class DownloadXML extends AsyncTask<File, Integer, String> {
private Activity activity;
public DownloadXML(Activity activity) {
this.activity = activity;
}
protected void onPreExecute() {
... Do stuff ...
}
protected String doInBackground(File... files) {
// Check if the task is cancelled
if (isCancelled()) { return null; }
... Do stuff ...
... Do stuff ...
... Do stuff ...
return null;
}
protected void onPostExecute(String result) {
... Do stuff ...
}
@Override
protected void onCancelled() {
... Do stuff ...
}
}
Vous avez décrit le comportement, mais pas le comportement souhaité. –
Merci pour le commentaire. J'ai besoin de la tâche à exécuter comme prévu le même lorsque l'écran est allumé. Il devrait être annulé seulement quand l'utilisateur cause l'annulation. – adamioan
@adamioan: Lorsque "l'écran est éteint", votre "Activité" et les "Fragments" ne seront plus en cours d'exécution. Si vous voulez effectuer un traitement en arrière-plan tel que des téléchargements, utilisez un 'Service'. – Squonk