Une bonne pratique consiste à créer anonyme AsyncTask parallèle petite connus processus de freeze?
E. g.: tu vas faire quelque chose qui ne prendra que quelques secondes et ne veux pas geler votre INTERFACE utilisateur thred, droit? Vous pouvez utiliser un AsyncTask, mais vous ne voulez pas créer un externe (ou interne) de la classe pour résoudre un petit gel problème.
Donc, est une bonne pratique?
package com.example.stackoverflowsandbox;
import android.os.AsyncTask;
public class Foo {
//E.g. before call foo method you change you Activity to loading state.
private void foo() {
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground( final Void ... params ) {
//something you know that will take a few seconds
return null;
}
@Override
protected void onPostExecute( final Void result ) {
//continue what you are doing...
Foo.this.continueSomething();
}
}.execute();
}
private void continueSomething() {
//some code...
}
}
J'ai été confronté avec ce que quand je la compression des images bitmap et boucle grand tableau pour mettre à jour certaines données à l'intérieur des éléments.
Je ne vois pas comment cela permet d'économiser tout travail vs la création d'un intérieur de classe, regarde juste terriblement désordre de l'OMI
Ça dépend... la seule chose qu'il puisse arriver est que le Fil(AsyncTask) continue de fonctionner une fois que l'Activité a été mis en arrière-plan ou est détruit. Mais en général, c'est terrible, parce que la classe anonyme est emprunté quelque part dans le code.
juste pour une question de lisibilité, rappelez-vous que les objets de créer à partir de anonyme intérieur de la classe sont appelés avec la notation
Je ne vois pas de problèmes, mais dans certains cas, vous préférerez peut-être créer une définition externe pour des fins de réutilisation. Personnellement, je préfère l'externe asynctasks/auditeurs modèle. Il y a une performance de pointe sur la création d'intérieure privée les classes de developer.android.com/training/articles/... qui ne s'appliquent pas à votre cas, mais intéressant à lire.
Ça dépend... la seule chose qu'il puisse arriver est que le Fil(AsyncTask) continue de fonctionner une fois que l'Activité a été mis en arrière-plan ou est détruit. Mais en général, c'est terrible, parce que la classe anonyme est emprunté quelque part dans le code.
juste pour une question de lisibilité, rappelez-vous que les objets de créer à partir de anonyme intérieur de la classe sont appelés avec la notation
OuterClass$2
, et si vous commencez à la nidification intérieur de la classe, le debuggin peut être difficileJe ne vois pas de problèmes, mais dans certains cas, vous préférerez peut-être créer une définition externe pour des fins de réutilisation. Personnellement, je préfère l'externe asynctasks/auditeurs modèle. Il y a une performance de pointe sur la création d'intérieure privée les classes de developer.android.com/training/articles/... qui ne s'appliquent pas à votre cas, mais intéressant à lire.
OriginalL'auteur Marcelo Filho | 2014-07-18
Vous devez vous connecter pour publier un commentaire.
Oui, mais pas la façon dont vous le faites.
Rappelez-vous que, à compter de Nid d'abeilles le défaut d'exécution du modèle de AsyncTasks est de série:
Au lieu d'utiliser un pool de threads exécuteur testamentaire:
si par "comme ça" tu veux dire l'instanciation de l'anonymat de la asynctasks alors la réponse est oui. pas de problèmes en termes d'exécution du code et même un départ développeur android savez ce que vous voulez dire
PRÉCISIONS: execute() exécute des tâches en série uniquement à l'égard des autres AsyncTasks invoquée de cette façon. C'est un seul thread d'arrière-plan qui fonctionne, mais c'est toujours en parallèle wrt l'appelant.
Je ne suis pas convaincu qu'on a toujours envie de faire des choses en parallèle en arrière-plan. La série est souvent plus facile et encore ne pas geler l'INTERFACE utilisateur.
"En commençant avec NID d'abeille, les tâches sont exécutées sur un seul thread pour éviter les erreurs d'application causés par l'exécution en parallèle."
OriginalL'auteur Gilad Haimov